Compare commits

...

39 Commits

Author SHA1 Message Date
881faf7aac fix 2026-02-02 21:37:34 +01:00
cb8eacf322 minor fixes 2026-02-02 21:32:46 +01:00
1a756d60e8 Merge pull request 'noctilia-experiment' (#1) from noctilia-experiment into main
Reviewed-on: #1
2026-02-02 20:25:04 +00:00
e5b5d68808 pełna konfiguracja noctalia i czystka waybar, swaync, wlogout i skryptów 2026-02-02 21:23:05 +01:00
80d7fc08cc Update settings shortcut and force mimeapps.list
- Replace Super+Shift+, with Super+Alt+P to toggle settings
- Force mimeapps.list in XDG config
2026-02-02 02:20:37 +01:00
8ccb9205bf Add Noctalia shell with Quickshell overview
- Add `noctalia` input to flake and lock it in `flake.lock`.
- Include `noctalia` and `quickshell` modules in `flake.nix`.
- Extend core packages to accept `inputs` and `system`; add
  `quickshell.nix`
  with required Qt6 packages and environment variables.
- Enable `upower` service for battery handling.
- Add home modules `noctalia.nix` and `overview.nix` (QML UI, README,
  assets, widgets, services) to provide a workspace overview.
- Comment out unused rofi and web‑search binds; update `exec‑once` to
  start
  the overview daemon and `noctalia-shell`.
- Provide `restart.noctalia` script and its Nix wrapper.
- Enable `noctalia-shell` in `stylix` configuration.
2026-02-02 01:57:56 +01:00
51ad90dc9c Update flake.lock with latest revisions 2026-02-02 00:38:36 +01:00
248b2f1dbb Enable VirtualBox and add development aliases 2026-01-31 16:48:35 +01:00
c258681d10 Add VirtualBox support with disabled default 2026-01-30 14:15:28 +01:00
5314aba270 update 2026-01-29 01:55:42 +01:00
0f00938787 Enable Winboat remote desktop module 2026-01-27 19:43:17 +01:00
6cbbd0110d Tile mpv windows instead of floating 2026-01-21 23:43:01 +01:00
01cc53fff1 Add tailscale SSH host and use username variable
- Simplify server aliases and add tailscale‑specific aliases
- Make SSH module accept a username argument
- Add match block for Tailscale host with port 22 and identity file
2026-01-19 11:14:41 +01:00
7501159100 Add Logisim Evolution support
- Include logisim‑evolution in the core packages list.
- Add `logisim-evolution.enable` option to system modules (enabled on
  desktop).
- Bind `SUPER SHIFT F` to toggle floating windows.
- Add tiling rule for Logisim windows.
- Update `upf` alias to specify the flake path.
- Refresh flake.lock revisions for firefox‑addons and wrappers.
2026-01-18 02:12:59 +01:00
727462ffd3 Update flake.lock with latest revisions 2026-01-17 13:57:47 +01:00
7446d8c239 Enable Tailscale and Prism Launcher in Garand-Laptop config 2026-01-15 08:30:32 +01:00
085e02f539 Update flake.lock and add game window rules
- Bump all flake.lock entries to their latest revisions (updated
  lastModified, narHash, and rev values).
- Add Hyprland rule to tag Minecraft windows as games.
- Tag PrismLauncher windows as gamestore.
- Apply reduced opacity for the gamestore tag.
2026-01-12 05:52:55 +01:00
9d9ed0f04b Add Teams, disable Ferdium, refactor Hyprland
Enable teams-for-linux and disable ferdium in system modules; add both
to core packages. Simplify Hyprland configuration by using direct
settings for animations, window rules, env, exec‑once and hypridle.
Remove unused Microsoft Teams PWA entry.
2026-01-07 19:49:21 +01:00
28daa28c6b Replace $modifier with SUPER and update defaults 2026-01-06 21:46:12 +01:00
b8a7ead4be Add Tailscale module 2026-01-04 13:49:01 +01:00
2881d84c16 Add Peaclock home module and wrappers input
Enable Peaclock in the user’s home configuration and add a new
`wrappers` input to the flake. System‑level Peaclock references are
commented out, and default and digital config files for Peaclock are
included.
2026-01-03 18:00:23 +01:00
591e42fe61 aktualizacja 2025-12-29 01:14:13 +01:00
f21640749a Disable Opencode; update flake.lock and librewolf
- Opencode module disabled in desktop, laptop, and default host configs
- Updated flake.lock revisions for firefox‑addons, home‑manager, nixpkgs
  and stylix
- Librewolf now uses pkgs.librewolf (source) instead of the binary
  package
2025-12-23 06:05:45 +01:00
0b9623241a Add Bottles and Heroic
Update flake.lock revisions for firefox‑addons, home‑manager and nixpkgs
to reflect the inclusion of the new Bottles and Heroic packages.
2025-12-20 14:36:34 +01:00
7a6e3916f5 Add p7zip to essential packages 2025-12-17 16:30:45 +01:00
43c657523e Enable peaclock and bump locked revisions
Add peaclock to the core packages list and enable the peaclock module in
all system configurations. Update the flake.lock entries for several
packages with newer revisions and nar hashes.
2025-12-16 23:31:30 +01:00
594accfe8d Update flake.lock and force wallpaper style
Bump locked revisions for firefox‑addons, home‑manager, nixpkgs and
stylix in flake.lock, updating their lastModified timestamps, narHash
values and rev identifiers.

Change wallpaperStyle in boot.nix from lib.mkDefault to lib.mkForce to
ensure the centered style is always applied.
2025-12-15 15:55:39 +01:00
86c5e8ad5b Add Pixieditor module 2025-12-10 15:54:42 +01:00
f7fe35b3be update 2025-12-10 01:50:19 +01:00
629e7b6a9e Add enable XDG PWA entries and enable Signal 2025-12-08 21:43:17 +01:00
29c62adbd1 dodanie garandos-tui 2025-12-07 00:00:33 +01:00
5747e449b2 Update flake.lock with latest revisions 2025-12-04 10:47:39 +01:00
087ffd4194 Refactor Zed/Flatpak options and add C++ & clangd settings
- Switch Zed remote server and Flatpak packages to use `enable`
suboption - Update host modules to match the new option hierarchy - Add
default C++ settings (format on save, tab size) to Zed user settings -
Introduce clangd LSP configuration with inlay hints and fallback command
2025-12-01 13:28:43 +01:00
7a2382cb3c zmiana logo 2025-11-30 22:01:42 +01:00
be74b351e8 Restructure system-modules and bump flake.lock
- Consolidate enable flags into a `packages` attribute in all host
system-modules.nix files. - Rename package option paths to
`config.packages.<name>.enable` in modules/core/packages/packages.nix. -
Update locked revisions (lastModified, narHash, rev) for firefox‑addons
and stylix in flake.lock.
2025-11-30 14:05:19 +01:00
8d3fd7dbe2 Add Jan UI and selective Flatpak options
- Expose Jan as a core package and add a Hyprland shortcut (Mod + J). -
Refactor Flatpak module to provide per‑package enable options; default
package list is now empty. - Update librewolf search template to use a
single‑parameter URL. - Minor comment formatting changes across host
module files.
2025-11-30 13:26:51 +01:00
d80266e89a Upgrade flakes, use NVIDIA beta, add Zed inlay hints
- Bumped versions in flake.lock (affinity‑nix, nur‑expressions,
home‑manager, nixpkgs, stylix). - Switched NVIDIA driver package from
stable to beta. - Added Zed `inlay_hints` configuration and
rust‑analyzer inlayHints options.
2025-11-29 19:38:27 +01:00
3f14984072 Refresh locked deps and use librewolf-bin
Update flake.lock entries to newer revisions and switch Librewolf to the
pre‑built binary package.
2025-11-26 20:25:23 +01:00
ef49539fed Add plex-desktop bind; move hyprpicker to Ctrl+P 2025-11-24 01:57:27 +01:00
117 changed files with 2024 additions and 5248 deletions

34
GarandOS.svg Normal file
View File

@@ -0,0 +1,34 @@
<svg version="1.1" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
<g opacity="1" id="Nowy folder">
<g opacity="1" id="Nowy folder">
<g opacity="1" id="Nowy folder">
<path d="M204.958 225.203L88.751 427.776L61.6218 381.485L92.9365 327.23L30.7418 327.069L17.485 303.936L31.0226 280.277L119.554 280.558L151.369 225.346L204.958 225.203ZM213.875 387.14L446.27 387.151L420.006 433.946L357.665 433.773L388.622 488.074L375.35 511.194L348.228 511.225L304.199 433.912L240.789 433.781L213.875 387.14ZM349.136 298.374L232.949 95.7897L286.345 95.2858L317.364 149.713L348.602 95.5781L375.134 95.5858L388.722 119.218L344.212 196.251L375.808 251.594L349.136 298.374Z" fill-rule="nonzero" transform="matrix(1, 0, 0, 1, 0, 0)" fill="#f87c0e" fill-opacity="1" stroke="#ffffff" stroke-width="0" stroke-linecap="butt" stroke-linejoin="round" opacity="1" id="Ścieżka" />
</g>
<g opacity="1" id="Nowy folder">
<path d="M163.021 308.653L279.209 511.237L225.812 511.741L194.794 457.313L163.556 511.448L137.023 511.441L123.436 487.808L167.946 410.776L136.35 355.433L163.021 308.653ZM297.975 219.375L65.5804 219.364L91.8478 172.572L154.185 172.745L123.228 118.445L136.5 95.3242L163.625 95.2858L207.651 172.599L271.065 172.73L297.979 219.371L297.975 219.375ZM307.042 381.781L423.249 179.205L450.378 225.5L419.06 279.75L481.258 279.916L494.515 303.048L480.977 326.707L392.446 326.426L360.631 381.638L307.042 381.781Z" fill-rule="nonzero" transform="matrix(1, 0, 0, 1, 0, 0)" fill="#d31411" fill-opacity="1" stroke="#ffffff" stroke-width="0" stroke-linecap="butt" stroke-linejoin="round" opacity="1" id="Ścieżka" />
</g>
</g>
</g>
<g opacity="1" id="Nowy folder">
<g opacity="1" id="Nowy folder">
<g opacity="1" id="Nowy folder">
<path d="M2450 3260C2088 3214 2045 3204 1575 3048L1180 2917L928 2604C701 2323 658 2256 500 1940L324 1589L214 935L261 647C302 397 315 355 354 329C379 313 421 286 447 269C493 240 499 243 629 364C827 548 853 562 898 503C996 373 2188 395 3060 543C3524 622 4487 845 4562 891C4572 897 4752 924 4963 950C5340 997 5415 1021 5377 1085C5375 1088 5394 1128 5418 1175C5481 1300 5446 1823 5362 2010C5332 2076 5276 2200 5239 2285C5144 2500 4859 2805 4595 2974C4143 3264 3340 3371 2450 3260Z" fill-rule="nonzero" transform="matrix(0.07236655, 0.03395807, 0.03395807, -0.07236655, 1.3727798, 172.38365)" fill="url(#radialGradient0)" stroke="#ffffff" stroke-width="0" stroke-linecap="butt" stroke-linejoin="round" opacity="1" id="Ścieżka" />
</g>
<g opacity="1" id="Nowy folder">
<g opacity="1" id="sex">
<path d="M817.655 463.605C817.655 463.605 854.451 461.794 890.298 462.854C920.592 463.75 999.455 459.842 999.455 459.842C999.455 459.842 1003.91 465.764 998.44 470.501C991.48 476.524 965.783 477.134 965.783 477.134C965.783 477.134 887.398 481.385 847.948 482.786C831.474 483.371 827.044 484.107 827.044 484.107C749.409 511.416 382.407 556.101 132.027 514.61C89.434 507.552 75.311 501.175 75.311 501.175C75.311 501.175 69.701 498.783 67.055 497.251C61.505 494.037 59.627 487.436 55.064 485.302C97.102 484.629 200.019 503.974 231.976 506.06C434.227 519.263 787.431 470.57 817.655 463.605Z" fill-rule="nonzero" transform="matrix(0.36220634, 0.1296544, -0.1296544, 0.36220634, 124.92382, -19.742592)" fill="#66403a" fill-opacity="1" stroke="#ffffff" stroke-width="0" stroke-linecap="butt" stroke-linejoin="round" opacity="1" id="Ścieżka" />
</g>
</g>
<g opacity="1" id="Nowy folder">
<path d="M673.187 -57.558C673.187 -57.558 612.481 82.106 627.658 249.732C640.891 395.9 728.739 515.282 728.739 515.282C479.26 696.823 247.039 715.481 -25.318 512.668C-25.318 512.668 28.205 384.383 19.217 255.062C10.52 129.933 -83.313 -14.958 -83.313 -14.958C39.333 -197.304 437.51 -263.061 673.187 -57.558Z" fill-rule="nonzero" transform="matrix(0.10106731, 0.015680183, -0.017484369, 0.11269537, 243.86673, 125.96185)" fill="#d5a12b" fill-opacity="1" stroke="#ffffff" stroke-width="0" stroke-linecap="butt" stroke-linejoin="round" opacity="1" id="Ścieżka" />
</g>
</g>
</g>
<defs>
<radialGradient gradientTransform="matrix(-2850.1318, 2233.969, 2233.969, 2850.1318, 3820.5884, 481.4537)" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" id="radialGradient0">
<stop stop-color="#8b2928" offset="0%" stop-opacity="1" />
<stop stop-color="#842929" offset="54%" stop-opacity="1" />
<stop stop-color="#6d272e" offset="100%" stop-opacity="1" />
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -1,3 +1,7 @@
![GarandOS Logo](./GarandOS.svg)
---
# **GarandOS** # **GarandOS**
Disclaimer: This configuration is a fork of [ZaneyOS](https://gitlab.com/Zaney/zaneyos), a wonderful configuration I had the pleasure of ~~stealing~~ forking almost a year ago for my laptop (version 2.2). Now that I've installed NIxOS on my main computer, I've installed the latest version (2.4), connected my repository, and am customizing it to suit my needs. My configuration won't be synchronized with the main project, as it serves as the foundation upon which I'm building my custom system. The original has been stripped of many unnecessary features, so I highly recommend checking out the original project and, like me, adapting it to your needs. If you like my configuration, fork it too and manage it yourself, as the project won't accept external pull requests. Disclaimer: This configuration is a fork of [ZaneyOS](https://gitlab.com/Zaney/zaneyos), a wonderful configuration I had the pleasure of ~~stealing~~ forking almost a year ago for my laptop (version 2.2). Now that I've installed NIxOS on my main computer, I've installed the latest version (2.4), connected my repository, and am customizing it to suit my needs. My configuration won't be synchronized with the main project, as it serves as the foundation upon which I'm building my custom system. The original has been stripped of many unnecessary features, so I highly recommend checking out the original project and, like me, adapting it to your needs. If you like my configuration, fork it too and manage it yourself, as the project won't accept external pull requests.
@@ -183,15 +187,14 @@ git add .
- `profile` - graphics card profile, choose the one most suitable for your hardware. - `profile` - graphics card profile, choose the one most suitable for your hardware.
- `gitUsername` and `gitEmail` - required for proper git usage. - `gitUsername` and `gitEmail` - required for proper git usage.
- `extraMonitorSettings` - specify your monitor (cable, resolution, refresh rate. You can leave the other two options). - `extraMonitorSettings` - specify your monitor (cable, resolution, refresh rate. You can leave the other two options).
- `clock24h` - whether you want 24 or 12 hour clock.
- `browser` - browser package name opened with shortcut **SUPER + W**.
- `terminal` - terminal package name opened with shortcut **SUPER + Enter**
- `keyboardLayout` and `consoleKeyMap` - keyboard layout (special characters ą,ę, etc.). - `keyboardLayout` and `consoleKeyMap` - keyboard layout (special characters ą,ę, etc.).
- `location` - your location.
- `stylixImage` - default system wallpaper, based on which the graphical theme (stylix) will be generated. You can browse them in the `wallpapers` folder. - `stylixImage` - default system wallpaper, based on which the graphical theme (stylix) will be generated. You can browse them in the `wallpapers` folder.
- `waybarChoice` - system top bar style.
- `animChoice` - system animation style.
### 5. Review module activation options ### 5. Review module activation options
Also check my new project - [GarandOS TUI](https://gitea.garandplg.com/GarandPLG/garandos-tui)! It's an automated way of tweaking this settings. You can use it later *(simply type `tui` into the terminal)*, after the setup, or use it right now by cloning the repo.
Open the module files for your host and adjust the `enable` options for the services you need: Open the module files for your host and adjust the `enable` options for the services you need:
```bash ```bash

274
flake.lock generated
View File

@@ -15,11 +15,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1763676235, "lastModified": 1767916874,
"narHash": "sha256-6Bri1agFBZdwrO3l32m1aUO6jHfbeBW+8eFVSlBkUAM=", "narHash": "sha256-IcvLwoF1CIOd7yELc0Xwqskilw2FxHHRm5ZnmNdBuKc=",
"owner": "mrshmllow", "owner": "mrshmllow",
"repo": "affinity-nix", "repo": "affinity-nix",
"rev": "f4ed11bdb68bc14a11a1c1a545ef1891a02cb1a1", "rev": "0c110a15fb5605490f7de451073db1c775745fee",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -28,26 +28,6 @@
"type": "github" "type": "github"
} }
}, },
"auto-cpufreq": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1763546214,
"narHash": "sha256-vc9seqvw2ElF8jPetsCoCQ5lo9P3fmgiTle3HlOMezk=",
"owner": "AdnanHodzic",
"repo": "auto-cpufreq",
"rev": "76ccb66f8e4875671fd746fb6b50931454ab8cd8",
"type": "github"
},
"original": {
"owner": "AdnanHodzic",
"repo": "auto-cpufreq",
"type": "github"
}
},
"base16": { "base16": {
"inputs": { "inputs": {
"fromYaml": "fromYaml" "fromYaml": "fromYaml"
@@ -69,28 +49,28 @@
"base16-fish": { "base16-fish": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1754405784, "lastModified": 1765809053,
"narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=", "narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=",
"owner": "tomyun", "owner": "tomyun",
"repo": "base16-fish", "repo": "base16-fish",
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "tomyun", "owner": "tomyun",
"repo": "base16-fish", "repo": "base16-fish",
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
"type": "github" "type": "github"
} }
}, },
"base16-helix": { "base16-helix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1752979451, "lastModified": 1760703920,
"narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=", "narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-helix", "repo": "base16-helix",
"rev": "27cf1e66e50abc622fb76a3019012dc07c678fac", "rev": "d646af9b7d14bff08824538164af99d0c521b185",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -135,6 +115,28 @@
"type": "gitlab" "type": "gitlab"
} }
}, },
"fenix": {
"inputs": {
"nixpkgs": [
"garandos-tui",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1762929886,
"narHash": "sha256-TQZ3Ugb1FoHpTSc8KLrzN4njIZU4FemAMHyS4M3mt6s=",
"owner": "nix-community",
"repo": "fenix",
"rev": "6998514dce2c365142a0a119a95ef95d89b84086",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"firefox-addons": { "firefox-addons": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -143,11 +145,11 @@
}, },
"locked": { "locked": {
"dir": "pkgs/firefox-addons", "dir": "pkgs/firefox-addons",
"lastModified": 1763929296, "lastModified": 1769918637,
"narHash": "sha256-mFTtmYp1gs1y8O9GKGsMWoMCXL5RLejUivBSRbRO34Y=", "narHash": "sha256-3XyGk89S0UFvKRZiKpFL4ImP5qP/2AOJUaYC7ogXnJo=",
"owner": "rycee", "owner": "rycee",
"repo": "nur-expressions", "repo": "nur-expressions",
"rev": "84c6e18e927e4d3281a9afd70bcc0e4cafd8720d", "rev": "5659e4c18d1350d1b511fcdce885fdd879effa22",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
@@ -160,11 +162,11 @@
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1758112371, "lastModified": 1764873433,
"narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=", "narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=",
"owner": "rafaelmardojai", "owner": "rafaelmardojai",
"repo": "firefox-gnome-theme", "repo": "firefox-gnome-theme",
"rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d", "rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -189,15 +191,15 @@
"flake-compat_2": { "flake-compat_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1747046372, "lastModified": 1767039857,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra", "owner": "NixOS",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "edolstra", "owner": "NixOS",
"repo": "flake-compat", "repo": "flake-compat",
"type": "github" "type": "github"
} }
@@ -207,11 +209,11 @@
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": "nixpkgs-lib"
}, },
"locked": { "locked": {
"lastModified": 1762980239, "lastModified": 1767609335,
"narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=", "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "52a2caecc898d0b46b2b905f058ccc5081f842da", "rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -227,11 +229,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1756770412, "lastModified": 1767609335,
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "4524271976b625a4a605beefd893f270620fd751", "rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -256,6 +258,29 @@
"type": "github" "type": "github"
} }
}, },
"garandos-tui": {
"inputs": {
"fenix": "fenix",
"naersk": "naersk",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1765060905,
"narHash": "sha256-YLU5g2aSs1Sh+6j301BtQYUdQ8IqLvoeR4Eivr4eVYc=",
"ref": "main",
"rev": "028b50c9e4d7160cfa8fac8150a54a52680f4ff5",
"revCount": 13,
"type": "git",
"url": "https://gitea.garandplg.com/GarandPLG/garandos-tui"
},
"original": {
"ref": "main",
"type": "git",
"url": "https://gitea.garandplg.com/GarandPLG/garandos-tui"
}
},
"git-hooks": { "git-hooks": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
@@ -265,11 +290,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1763319842, "lastModified": 1767281941,
"narHash": "sha256-YG19IyrTdnVn0l3DvcUYm85u3PaqBt6tI6VvolcuHnA=", "narHash": "sha256-6MkqajPICgugsuZ92OMoQcgSHnD6sJHwk8AxvMcIgTE=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "7275fa67fbbb75891c16d9dee7d88e58aea2d761", "rev": "f0927703b7b1c8d97511c4116eb9b4ec6645a0fa",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -302,11 +327,11 @@
"flake": false, "flake": false,
"locked": { "locked": {
"host": "gitlab.gnome.org", "host": "gitlab.gnome.org",
"lastModified": 1762869044, "lastModified": 1767737596,
"narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=", "narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
"owner": "GNOME", "owner": "GNOME",
"repo": "gnome-shell", "repo": "gnome-shell",
"rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad", "rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
@@ -324,11 +349,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1763906693, "lastModified": 1769952507,
"narHash": "sha256-inm7paa3myo8gE4TzjM8OPvsEg8xocWreIZBgBPEKgo=", "narHash": "sha256-eNTfxT3v8b7s1dqswgposi5Y1CUMoOUhQKiy29QY25U=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "3d6c1c8fa0bea3a1a7ba23d6fa5993116766073b", "rev": "b59376563943ce163b2553aeb63d0c170967d74e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -341,11 +366,11 @@
"libnbtplusplus": { "libnbtplusplus": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1699286814, "lastModified": 1744811532,
"narHash": "sha256-yy0q+bky80LtK1GWzz7qpM+aAGrOqLuewbid8WT1ilk=", "narHash": "sha256-qhmjaRkt+O7A+gu6HjUkl7QzOEb4r8y8vWZMG2R/C6o=",
"owner": "PrismLauncher", "owner": "PrismLauncher",
"repo": "libnbtplusplus", "repo": "libnbtplusplus",
"rev": "23b955121b8217c1c348a9ed2483167a6f3ff4ad", "rev": "531449ba1c930c98e0bcf5d332b237a8566f9d78",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -354,13 +379,38 @@
"type": "github" "type": "github"
} }
}, },
"naersk": {
"inputs": {
"fenix": [
"garandos-tui",
"fenix"
],
"nixpkgs": [
"garandos-tui",
"nixpkgs"
]
},
"locked": {
"lastModified": 1752689277,
"narHash": "sha256-uldUBFkZe/E7qbvxa3mH1ItrWZyT6w1dBKJQF/3ZSsc=",
"owner": "nix-community",
"repo": "naersk",
"rev": "0e72363d0938b0208d6c646d10649164c43f4d64",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"nix-flatpak": { "nix-flatpak": {
"locked": { "locked": {
"lastModified": 1739444422, "lastModified": 1767983141,
"narHash": "sha256-iAVVHi7X3kWORftY+LVbRiStRnQEob2TULWyjMS6dWg=", "narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=",
"owner": "gmodena", "owner": "gmodena",
"repo": "nix-flatpak", "repo": "nix-flatpak",
"rev": "5e54c3ca05a7c7d968ae1ddeabe01d2a9bc1e177", "rev": "440818969ac2cbd77bfe025e884d0aa528991374",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -372,11 +422,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1763678758, "lastModified": 1769789167,
"narHash": "sha256-+hBiJ+kG5IoffUOdlANKFflTT5nO3FrrR2CA3178Y5s=", "narHash": "sha256-kKB3bqYJU5nzYeIROI82Ef9VtTbu4uA3YydSk/Bioa8=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "117cc7f94e8072499b0a7aa4c52084fa4e11cc9b", "rev": "62c8382960464ceb98ea593cb8321a2cf8f9e3e5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -388,11 +438,11 @@
}, },
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1761765539, "lastModified": 1765674936,
"narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=", "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "719359f4562934ae99f5443f20aa06c2ffff91fc", "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -417,6 +467,26 @@
"type": "github" "type": "github"
} }
}, },
"noctalia": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1769983098,
"narHash": "sha256-PKej3N1BxAoKzusrdWuS9gT8bXW0U/Zk8RkedsP3qYc=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "2a98d04b2f5e251935ba296c0d7dc374bdc5e32d",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"type": "github"
}
},
"nur": { "nur": {
"inputs": { "inputs": {
"flake-parts": [ "flake-parts": [
@@ -428,11 +498,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1758998580, "lastModified": 1767810917,
"narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=", "narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728", "rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -444,11 +514,11 @@
"on-linux": { "on-linux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1763514293, "lastModified": 1766544016,
"narHash": "sha256-x766SlDqS6DoOQyW4u1zV3iZbrEKoy4P9K6XDjZ4fGU=", "narHash": "sha256-3X1426N7n6bwM7GAQOvpCq2OVdlQevCzbpak0l9B6BU=",
"owner": "seapear", "owner": "seapear",
"repo": "AffinityOnLinux", "repo": "AffinityOnLinux",
"rev": "2eacfdf625bfafa3099d411f8e2d5afec565fcd6", "rev": "da601564dfefe2ae3ec10e3f177db81578847b7b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -477,11 +547,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1747683146, "lastModified": 1768437816,
"narHash": "sha256-zZS//xyNYQHvD4fUMoWx86uVUwPk+p5FjZLTTu0pelQ=", "narHash": "sha256-GG+V2g5NfVrypTs8qbtGnUWTXTMkGtohy/uIDa5duI0=",
"owner": "Diegiwg", "owner": "Diegiwg",
"repo": "PrismLauncher-Cracked", "repo": "PrismLauncher-Cracked",
"rev": "0612187254ef41a1087f3107e927e0dd59c9b29d", "rev": "e8418b74059bdbe4fcc97522b25dc17373b0cc21",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -493,15 +563,33 @@
"root": { "root": {
"inputs": { "inputs": {
"affinity-nix": "affinity-nix", "affinity-nix": "affinity-nix",
"auto-cpufreq": "auto-cpufreq",
"firefox-addons": "firefox-addons", "firefox-addons": "firefox-addons",
"garandos-tui": "garandos-tui",
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"noctalia": "noctalia",
"prismlauncher-cracked": "prismlauncher-cracked", "prismlauncher-cracked": "prismlauncher-cracked",
"stylix": "stylix" "stylix": "stylix"
} }
}, },
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1762860488,
"narHash": "sha256-rMfWMCOo/pPefM2We0iMBLi2kLBAnYoB9thi4qS7uk4=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "2efc80078029894eec0699f62ec8d5c1a56af763",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"stylix": { "stylix": {
"inputs": { "inputs": {
"base16": "base16", "base16": "base16",
@@ -523,11 +611,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1763845141, "lastModified": 1769888473,
"narHash": "sha256-o8TKdZluj/yC8qPIVNe2g4qopyFmQglH52+lvQx82kE=", "narHash": "sha256-4KWbaJwaYnZ60bFyTudZYAKskjr7Sa17R3/yh+oXS7w=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "adc650610085adbe130b9860d5bdb869f96050af", "rev": "ae5c0239ae4f82a8c7e33ad8a456535d5a9ba813",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -587,11 +675,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1757716333, "lastModified": 1767710407,
"narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=", "narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "317a5e10c35825a6c905d912e480dfe8e71c7559", "rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -603,11 +691,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1757811970, "lastModified": 1767489635,
"narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=", "narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e", "rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -619,11 +707,11 @@
"tinted-zed": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1757811247, "lastModified": 1767488740,
"narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=", "narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-zed", "repo": "base16-zed",
"rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e", "rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -639,11 +727,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1762938485, "lastModified": 1767801790,
"narHash": "sha256-AlEObg0syDl+Spi4LsZIBrjw+snSVU4T8MOeuZJUJjM=", "narHash": "sha256-QfX6g3Wj2vQe7oBJEbTf0npvC6sJoDbF9hb2+gM5tf8=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "5b4ee75aeefd1e2d5a1cc43cf6ba65eba75e83e4", "rev": "778a1d691f1ef45dd68c661715c5bf8cbf131c80",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -21,8 +21,8 @@
}; };
}; };
auto-cpufreq = { noctalia = {
url = "github:AdnanHodzic/auto-cpufreq"; url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
@@ -49,12 +49,17 @@
}; };
nix-flatpak.url = "github:gmodena/nix-flatpak?ref=latest"; nix-flatpak.url = "github:gmodena/nix-flatpak?ref=latest";
garandos-tui = {
url = "git+https://gitea.garandplg.com/GarandPLG/garandos-tui?ref=main";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { outputs = {
nixpkgs, nixpkgs,
nix-flatpak, nix-flatpak,
auto-cpufreq, garandos-tui,
... ...
} @ inputs: let } @ inputs: let
hostDirs = builtins.attrNames (builtins.readDir ./hosts); hostDirs = builtins.attrNames (builtins.readDir ./hosts);
@@ -80,7 +85,7 @@
modules = [ modules = [
./profiles/${profile} ./profiles/${profile}
nix-flatpak.nixosModules.nix-flatpak nix-flatpak.nixosModules.nix-flatpak
auto-cpufreq.nixosModules.default garandos-tui.nixosModules.garandos-tui
]; ];
}; };
in { in {

View File

@@ -2,65 +2,64 @@ _: {
/* /*
Development editors and IDEs Development editors and IDEs
*/ */
# VSCodium: a free and open-source "demicrosofted" VSCode vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
vscodium.enable = false;
# Zed Editor: a modern, highperformance code editor
zed-editor = { zed-editor = {
# Enable Zed Editor enable = true; # Zed Editor: a modern, highperformance code editor
enable = true; remote-server.enable = true; # Remote Server: enable remote editing capabilities
# Remote Server: enable remote editing capabilities
remote-server = true;
}; };
/* /*
Web browsers Web browsers
*/ */
# Librewolf: a privacy-focused Firefox fork librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
librewolf.enable = true; ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
# Ungoogled Chromium: a privacy-focused Chromium fork
ungoogled-chromium.enable = true;
/* /*
System utilities System utilities
*/ */
# Btop: a resource monitor for the terminal btop.enable = true; # Btop: a resource monitor for the terminal
btop.enable = true; cava.enable = false; # Cava: terminal audio visualizer
# Cava: terminal audio visualizer fastfetch.enable = true; # Fastfetch: a fast system information tool
cava.enable = false;
# Fastfetch: a fast system information tool
fastfetch.enable = true;
/* /*
Communication and synchronization Communication and synchronization
*/ */
# KDE Connect: integrate your phone and desktop kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
kdeconnect.enable = false; nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
# Nextcloud Client: sync files with a Nextcloud server vesktop.enable = true; # Vesktop: a communitydriven Discord client
nextcloud-client.enable = true;
# Vesktop: a communitydriven Discord client
vesktop.enable = true;
/* /*
Gaming Gaming
*/ */
# Lutris: an open gaming platform lutris.enable = false; # Lutris: an open gaming platform
lutris.enable = false;
/* /*
Media recording and streaming Media recording and streaming
*/ */
# OBS Studio: streaming and recording software obs-studio.enable = false; # OBS Studio: streaming and recording software
obs-studio.enable = false;
/* /*
Office suite Office suite
*/ */
# OnlyOffice: an office suite compatible with Microsoft formats onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats
onlyoffice.enable = true;
/* /*
Learning tools Learning tools
*/ */
# Anki: spacedrepetition flashcard program anki.enable = true; # Anki: spacedrepetition flashcard program
anki.enable = true;
/*
XDG desktop entries (PWA)
*/
xdgDesktopEntries = {
enable = true; # Enable XDG desktop entries
entries = {
messenger.enable = true; # Messenger: Facebook Messenger
mastodon.enable = true; # Mastodon: a decentralized social network
garandcloud.enable = true; # GarandCloud: my Nextcloud instance
chatgpt.enable = true; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard
};
};
} }

View File

@@ -2,86 +2,89 @@ _: {
/* /*
Container & Packaging Container & Packaging
*/ */
# Docker: container runtime and management docker.enable = true; # Docker: container runtime and management
docker.enable = true; virtualbox.enable = true; # VirtualBox: PC emulator
# Distrobox: containerized development environments flatpak = {
distrobox.enable = false; enable = true; # Flatpak: universal packaging system for Linux
# Flatpak: universal packaging system for Linux packages = {
flatpak.enable = true; sober.enable = false; # Roblox client
# Lazydocker: simple TUI for Docker warehouse.enable = true; # Flatpak manager
lazydocker.enable = false; flatseal.enable = true; # Flatpak permissions manager
};
};
/*
Networking
*/
tailscale.enable = true; # Tailscale: secure network for remote access
/* /*
Gaming Gaming
*/ */
# GameMode: optimizes system performance for gaming gamemode.enable = true; # GameMode: optimizes system performance for gaming
gamemode.enable = true; gamescope.enable = false; # Gamescope: microcompositor for games
# Gamescope: micro-compositor for games steam.enable = true; # Steam: platform for buying and playing games
gamescope.enable = false;
# Prism Launcher: Minecraft modded launcher packages = {
prismlauncher.enable = false; /*
# Steam: platform for buying and playing games Container & Packaging
steam.enable = true; */
# SpaceCadet Pinball: classic pinball game distrobox.enable = false; # Distrobox: containerized development environments
spaceCadetPinball.enable = true; lazydocker.enable = false; # Lazydocker: simple TUI for Docker
# TTY Solitaire: terminal based solitaire game bottles.enable = false; # Bottles: Easy-to-use wineprefix manager
ttySolitaire.enable = true;
/*
Gaming
*/
prismlauncher.enable = true; # Prism Launcher: Minecraft modded launcher
spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = true; # TTY Solitaire: terminalbased solitaire game
heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
/* /*
Development Tools Development Tools
*/ */
# Exercism: coding practice platform exercism.enable = true; # Exercism: coding practice platform
exercism.enable = true; lazygit.enable = false; # Lazygit: simple TUI for Git
# Gedit: GNOME text editor opencode.enable = false; # OpenCode: tools for coding and development
gedit.enable = false; jan.enable = true; # Jan: AI chat UI
# Lazygit: simple TUI for git logisim-evolution.enable = true; # Logisim-Evolution: Digital logic designer and simulator
lazygit.enable = false;
# OpenCode: tools for coding and development
opencode.enable = true;
/* /*
Communication & Collaboration Communication & Collaboration
*/ */
# Mattermost: open-source Slack alternative mattermost.enable = true; # Mattermost: opensource Slack alternative
mattermost.enable = true; slack.enable = true; # Slack: team communication and collaboration tool
# Slack: team communication and collaboration tool tutanota.enable = true; # Tutanota: secure email client
slack.enable = true; signal.enable = true; # Signal: secure messaging app
# Tutanota: secure email client teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
tutanota.enable = true; ferdium.enable = false; # Ferdium: All your services in one place built by the community
/* /*
Productivity / Knowledge Management Productivity / Knowledge Management
*/ */
# Bitwarden: password manager (desktop) bitwarden.enable = false; # Bitwarden: password manager (desktop)
bitwarden.enable = false; iotas.enable = true; # Iotas: lightweight notes manager
# Iotas: lightweight notes manager logseq.enable = false; # Logseq: knowledge base and outliner
iotas.enable = true;
# Logseq: knowledge base and outliner
logseq.enable = false;
/* /*
Media & Graphics Media & Graphics
*/ */
# Affinity: professional graphics suite affinity.enable = false; # Affinity: professional graphics suite
affinity.enable = false; eyeOfGnome.enable = true; # Eye of GNOME: image viewer
# Eye of GNOME: image viewer freetube.enable = false; # FreeTube: privacyfriendly YouTube client
eyeOfGnome.enable = true; gimp.enable = false; # GIMP: GNU Image Manipulation Program
# FreeTube: privacyfriendly YouTube client kdenlive.enable = false; # Kdenlive: video editing software
freetube.enable = false; pixieditor.enable = true; # Pixieditor: Universal editor for all your 2D needs
# GIMP: gnu image manipulation program plex.enable = true; # Plex: media player and server client
gimp.enable = false;
# Kdenlive: video editing software
kdenlive.enable = false;
# Plex: media player and server client
plex.enable = true;
/* /*
Utilities / Misc Utilities / Misc
*/ */
# Eddie AirVPN: VPN client eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
eddieAirVPN.enable = true; galculator.enable = false; # Galculator: simple calculator
# Galculator: simple calculator gedit.enable = true; # Gedit: GNOME text editor
galculator.enable = true; winboat.enable = true; # Winboat: Windows remote desktop via RDP
# Winboat: Windows remote desktop via RDP adb.enable = false; # ADB: Android SDK platform tools
winboat.enable = false; };
} }

View File

@@ -23,22 +23,11 @@
# Inside the quotes, create a new line for each monitor. # Inside the quotes, create a new line for each monitor.
extraMonitorSettings = "monitor = DP-1,1920x1080@144,auto,1"; extraMonitorSettings = "monitor = DP-1,1920x1080@144,auto,1";
# Waybar Settings
clock24h = true;
# Program Options
# Set Default Browser (google-chrome-stable for google-chrome)
# This does NOT install your browser
# You need to install it by adding it to the `packages.nix`
# or as a flatpak
browser = "librewolf";
# Setting it here does not enable it. Kitty is installed by default
terminal = "kitty"; # Set Default System Terminal
keyboardLayout = "pl"; keyboardLayout = "pl";
consoleKeyMap = "pl"; consoleKeyMap = "pl";
location = "Żywiec, PL";
# For Nvidia Prime support # For Nvidia Prime support
intelID = "PCI:1:0:0"; intelID = "PCI:1:0:0";
nvidiaID = "PCI:0:2:0"; nvidiaID = "PCI:0:2:0";
@@ -53,44 +42,19 @@
# This will set your color palette # This will set your color palette
# Default background # Default background
# Add new images to ~/garandos/wallpapers # Add new images to ~/garandos/wallpapers
stylixImage = ../../wallpapers/attack-on-titan-mikasa-ackerman.jpg; stylixImage = "attack-on-titan-mikasa-ackerman.jpg";
#stylixImage = ../../wallpapers/DW_Pacts.jpg; #stylixImage = "DW_Pacts.jpg";
#stylixImage = ../../wallpapers/edward-elric-fullmetal-alchemist.jpg; #stylixImage = "edward-elric-fullmetal-alchemist.jpg";
#stylixImage = ../../wallpapers/fire-nation.jpg; #stylixImage = "fire-nation.jpg";
#stylixImage = ../../wallpapers/four-elements.jpg; #stylixImage = "four-elements.jpg";
#stylixImage = ../../wallpapers/fullmetal-alchemist-5120x2880-10399.png; #stylixImage = "fullmetal-alchemist-5120x2880-10399.png";
#stylixImage = ../../wallpapers/Grounded_Wallpaper_4K.jpg; #stylixImage = "Grounded_Wallpaper_4K.jpg";
#stylixImage = ../../wallpapers/jablon.jpg; #stylixImage = "jablon.jpg";
#stylixImage = ../../wallpapers/rammstein-log-two.jpg; #stylixImage = "rammstein-log-two.jpg";
#stylixImage = ../../wallpapers/rammstein-logo-one.jpg; #stylixImage = "rammstein-logo-one.jpg";
#stylixImage = ../../wallpapers/rammstein-logo-three.jpg; #stylixImage = "rammstein-logo-three.jpg";
#stylixImage = ../../wallpapers/rammstein-one.jpg; #stylixImage = "rammstein-one.jpg";
#stylixImage = ../../wallpapers/1346530.jpeg; #stylixImage = "1346530.jpeg";
# Set Waybar
# Available Options:
waybarChoice = ../../modules/home/waybar/waybar-curved.nix;
#waybarChoice = ../../modules/home/waybar/waybar-ddubs.nix;
#waybarChoice = ../../modules/home/waybar/waybar-ddubs-2.nix;
#waybarChoice = ../../modules/home/waybar/waybar-simple.nix;
# Throwback to GarandOS v1.0
#waybarChoice = ../../modules/home/waybar/waybar-jerry.nix;
# Very colorful and bright colors
#waybarChoice = ../../modules/home/waybar/waybar-nekodyke.nix;
# DWM styled waybars from Matt at TheLinuxCast
#waybarChoice = ../../modules/home/waybar/waybar-dwm.nix;
#waybarChoice = ../../modules/home/waybar/waybar-dwm-2.nix;
# Set Animation style
# Available options are:
# animations-def.nix (default)
# animations-end4.nix (end-4 project very fluid)
# animations-dynamic.nix (ml4w project)
# animations-moving.nix (ml4w project)
# animChoice = ../../modules/home/hyprland/animations-def.nix;
animChoice = ../../modules/home/hyprland/animations-end4.nix;
#animChoice = ../../modules/home/hyprland/animations-dynamic.nix;
#animChoice = ../../modules/home/hyprland/animations-moving.nix;
# Set network hostId if required (needed for zfs) # Set network hostId if required (needed for zfs)
# Otherwise leave as-is # Otherwise leave as-is

View File

@@ -2,65 +2,64 @@ _: {
/* /*
Development editors and IDEs Development editors and IDEs
*/ */
# VSCodium: a free and open-source "demicrosofted" VSCode vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
vscodium.enable = false;
# Zed Editor: a modern, highperformance code editor
zed-editor = { zed-editor = {
# Enable Zed Editor enable = true; # Zed Editor: a modern, highperformance code editor
enable = true; remote-server.enable = true; # Remote Server: enable remote editing capabilities
# Remote Server: enable remote editing capabilities
remote-server = true;
}; };
/* /*
Web browsers Web browsers
*/ */
# Librewolf: a privacy-focused Firefox fork librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
librewolf.enable = true; ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
# Ungoogled Chromium: a privacy-focused Chromium fork
ungoogled-chromium.enable = true;
/* /*
System utilities System utilities
*/ */
# Btop: a resource monitor for the terminal btop.enable = true; # Btop: a resource monitor for the terminal
btop.enable = true; cava.enable = false; # Cava: terminal audio visualizer
# Cava: terminal audio visualizer fastfetch.enable = true; # Fastfetch: a fast system information tool
cava.enable = false;
# Fastfetch: a fast system information tool
fastfetch.enable = true;
/* /*
Communication and synchronization Communication and synchronization
*/ */
# KDE Connect: integrate your phone and desktop kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
kdeconnect.enable = false; nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
# Nextcloud Client: sync files with a Nextcloud server vesktop.enable = true; # Vesktop: a communitydriven Discord client
nextcloud-client.enable = true;
# Vesktop: a communitydriven Discord client
vesktop.enable = true;
/* /*
Gaming Gaming
*/ */
# Lutris: an open gaming platform lutris.enable = false; # Lutris: an open gaming platform
lutris.enable = false;
/* /*
Media recording and streaming Media recording and streaming
*/ */
# OBS Studio: streaming and recording software obs-studio.enable = false; # OBS Studio: streaming and recording software
obs-studio.enable = false;
/* /*
Office suite Office suite
*/ */
# OnlyOffice: an office suite compatible with Microsoft formats onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats
onlyoffice.enable = true;
/* /*
Learning tools Learning tools
*/ */
# Anki: spacedrepetition flashcard program anki.enable = true; # Anki: spacedrepetition flashcard program
anki.enable = true;
/*
XDG desktop entries (PWA)
*/
xdgDesktopEntries = {
enable = true; # Enable XDG desktop entries
entries = {
messenger.enable = true; # Messenger: Facebook Messenger
mastodon.enable = true; # Mastodon: a decentralized social network
garandcloud.enable = true; # GarandCloud: my Nextcloud instance
chatgpt.enable = true; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard
};
};
} }

View File

@@ -2,86 +2,89 @@ _: {
/* /*
Container & Packaging Container & Packaging
*/ */
# Docker: container runtime and management docker.enable = true; # Docker: container runtime and management
docker.enable = true; virtualbox.enable = false; # VirtualBox: PC emulator
# Distrobox: containerized development environments flatpak = {
distrobox.enable = false; enable = true; # Flatpak: universal packaging system for Linux
# Flatpak: universal packaging system for Linux packages = {
flatpak.enable = true; sober.enable = false; # Roblox client
# Lazydocker: simple TUI for Docker warehouse.enable = true; # Flatpak manager
lazydocker.enable = false; flatseal.enable = true; # Flatpak permissions manager
};
};
/*
Networking
*/
tailscale.enable = true; # Tailscale: secure network for remote access
/* /*
Gaming Gaming
*/ */
# GameMode: optimizes system performance for gaming gamemode.enable = true; # GameMode: optimizes system performance for gaming
gamemode.enable = true; gamescope.enable = false; # Gamescope: microcompositor for games
# Gamescope: micro-compositor for games steam.enable = true; # Steam: platform for buying and playing games
gamescope.enable = false;
# Prism Launcher: Minecraft modded launcher packages = {
prismlauncher.enable = false; /*
# Steam: platform for buying and playing games Container & Packaging
steam.enable = true; */
# SpaceCadet Pinball: classic pinball game distrobox.enable = false; # Distrobox: containerized development environments
spaceCadetPinball.enable = true; lazydocker.enable = false; # Lazydocker: simple TUI for Docker
# TTY Solitaire: terminal based solitaire game bottles.enable = false; # Bottles: Easy-to-use wineprefix manager
ttySolitaire.enable = true;
/*
Gaming
*/
prismlauncher.enable = true; # Prism Launcher: Minecraft modded launcher
spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = true; # TTY Solitaire: terminalbased solitaire game
heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
/* /*
Development Tools Development Tools
*/ */
# Exercism: coding practice platform exercism.enable = true; # Exercism: coding practice platform
exercism.enable = true; lazygit.enable = false; # Lazygit: simple TUI for Git
# Gedit: GNOME text editor opencode.enable = false; # OpenCode: tools for coding and development
gedit.enable = false; jan.enable = true; # Jan: AI chat UI
# Lazygit: simple TUI for git logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
lazygit.enable = false;
# OpenCode: tools for coding and development
opencode.enable = true;
/* /*
Communication & Collaboration Communication & Collaboration
*/ */
# Mattermost: open-source Slack alternative mattermost.enable = true; # Mattermost: opensource Slack alternative
mattermost.enable = true; slack.enable = true; # Slack: team communication and collaboration tool
# Slack: team communication and collaboration tool tutanota.enable = true; # Tutanota: secure email client
slack.enable = true; signal.enable = true; # Signal: secure messaging app
# Tutanota: secure email client teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
tutanota.enable = true; ferdium.enable = false; # Ferdium: All your services in one place built by the community
/* /*
Productivity / Knowledge Management Productivity / Knowledge Management
*/ */
# Bitwarden: password manager (desktop) bitwarden.enable = false; # Bitwarden: password manager (desktop)
bitwarden.enable = false; iotas.enable = true; # Iotas: lightweight notes manager
# Iotas: lightweight notes manager logseq.enable = false; # Logseq: knowledge base and outliner
iotas.enable = true;
# Logseq: knowledge base and outliner
logseq.enable = false;
/* /*
Media & Graphics Media & Graphics
*/ */
# Affinity: professional graphics suite affinity.enable = false; # Affinity: professional graphics suite
affinity.enable = false; eyeOfGnome.enable = true; # Eye of GNOME: image viewer
# Eye of GNOME: image viewer freetube.enable = false; # FreeTube: privacyfriendly YouTube client
eyeOfGnome.enable = true; gimp.enable = false; # GIMP: GNU Image Manipulation Program
# FreeTube: privacyfriendly YouTube client kdenlive.enable = false; # Kdenlive: video editing software
freetube.enable = false; pixieditor.enable = false; # Pixieditor: Universal editor for all your 2D needs
# GIMP: gnu image manipulation program plex.enable = true; # Plex: media player and server client
gimp.enable = false;
# Kdenlive: video editing software
kdenlive.enable = false;
# Plex: media player and server client
plex.enable = true;
/* /*
Utilities / Misc Utilities / Misc
*/ */
# Eddie AirVPN: VPN client eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
eddieAirVPN.enable = true; galculator.enable = false; # Galculator: simple calculator
# Galculator: simple calculator gedit.enable = false; # Gedit: GNOME text editor
galculator.enable = true; winboat.enable = false; # Winboat: Windows remote desktop via RDP
# Winboat: Windows remote desktop via RDP adb.enable = false; # ADB: Android SDK platform tools
winboat.enable = false; };
} }

View File

@@ -23,22 +23,11 @@
# Inside the quotes, create a new line for each monitor. # Inside the quotes, create a new line for each monitor.
extraMonitorSettings = "monitor = eDP-1,1920x1080@60,auto,1"; extraMonitorSettings = "monitor = eDP-1,1920x1080@60,auto,1";
# Waybar Settings
clock24h = true;
# Program Options
# Set Default Browser (google-chrome-stable for google-chrome)
# This does NOT install your browser
# You need to install it by adding it to the `packages.nix`
# or as a flatpak
browser = "librewolf";
# Setting it here does not enable it. Kitty is installed by default
terminal = "kitty"; # Set Default System Terminal
keyboardLayout = "pl"; keyboardLayout = "pl";
consoleKeyMap = "pl"; consoleKeyMap = "pl";
location = "Żywiec, PL";
# For Nvidia Prime support # For Nvidia Prime support
intelID = "PCI:1:0:0"; intelID = "PCI:1:0:0";
nvidiaID = "PCI:0:2:0"; nvidiaID = "PCI:0:2:0";
@@ -49,51 +38,23 @@
# Enable Printing Support # Enable Printing Support
printEnable = false; printEnable = false;
# Themes, waybar and animation.
# Only uncomment your selection
# The others much be commented out.
# Set Stylix Image # Set Stylix Image
# This will set your color palette # This will set your color palette
# Default background # Default background
# Add new images to ~/garandos/wallpapers # Add new images to ~/garandos/wallpapers
stylixImage = ../../wallpapers/attack-on-titan-mikasa-ackerman.jpg; stylixImage = "attack-on-titan-mikasa-ackerman.jpg";
#stylixImage = ../../wallpapers/DW_Pacts.jpg; #stylixImage = "DW_Pacts.jpg";
#stylixImage = ../../wallpapers/edward-elric-fullmetal-alchemist.jpg; #stylixImage = "edward-elric-fullmetal-alchemist.jpg";
#stylixImage = ../../wallpapers/fire-nation.jpg; #stylixImage = "fire-nation.jpg";
#stylixImage = ../../wallpapers/four-elements.jpg; #stylixImage = "four-elements.jpg";
#stylixImage = ../../wallpapers/fullmetal-alchemist-5120x2880-10399.png; #stylixImage = "fullmetal-alchemist-5120x2880-10399.png";
#stylixImage = ../../wallpapers/Grounded_Wallpaper_4K.jpg; #stylixImage = "Grounded_Wallpaper_4K.jpg";
#stylixImage = ../../wallpapers/jablon.jpg; #stylixImage = "jablon.jpg";
#stylixImage = ../../wallpapers/rammstein-log-two.jpg; #stylixImage = "rammstein-log-two.jpg";
#stylixImage = ../../wallpapers/rammstein-logo-one.jpg; #stylixImage = "rammstein-logo-one.jpg";
#stylixImage = ../../wallpapers/rammstein-logo-three.jpg; #stylixImage = "rammstein-logo-three.jpg";
#stylixImage = ../../wallpapers/rammstein-one.jpg; #stylixImage = "rammstein-one.jpg";
#stylixImage = ../../wallpapers/1346530.jpeg; #stylixImage = "1346530.jpeg";
# Set Waybar
# Available Options:
waybarChoice = ../../modules/home/waybar/waybar-curved.nix;
#waybarChoice = ../../modules/home/waybar/waybar-ddubs.nix;
#waybarChoice = ../../modules/home/waybar/waybar-ddubs-2.nix;
#waybarChoice = ../../modules/home/waybar/waybar-simple.nix;
#waybarChoice = ../../modules/home/waybar/waybar-jerry.nix;
# Very colorful and bright colors
#waybarChoice = ../../modules/home/waybar/waybar-nekodyke.nix;
# DWM styled waybars from Matt at TheLinuxCast
#waybarChoice = ../../modules/home/waybar/waybar-dwm.nix;
#waybarChoice = ../../modules/home/waybar/waybar-dwm-2.nix;
# Set Animation style
# Available options are:
# animations-def.nix (default)
# animations-end4.nix (end-4 project very fluid)
# animations-dynamic.nix (ml4w project)
# animations-moving.nix (ml4w project)
# animChoice = ../../modules/home/hyprland/animations-def.nix;
animChoice = ../../modules/home/hyprland/animations-end4.nix;
#animChoice = ../../modules/home/hyprland/animations-dynamic.nix;
#animChoice = ../../modules/home/hyprland/animations-moving.nix;
# Set network hostId if required (needed for zfs) # Set network hostId if required (needed for zfs)
# Otherwise leave as-is # Otherwise leave as-is

View File

@@ -2,65 +2,64 @@ _: {
/* /*
Development editors and IDEs Development editors and IDEs
*/ */
# VSCodium: a free and open-source "demicrosofted" VSCode vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
vscodium.enable = false;
# Zed Editor: a modern, highperformance code editor
zed-editor = { zed-editor = {
# Enable Zed Editor enable = true; # Zed Editor: a modern, highperformance code editor
enable = true; remote-server.enable = true; # Remote Server: enable remote editing capabilities
# Remote Server: enable remote editing capabilities
remote-server = true;
}; };
/* /*
Web browsers Web browsers
*/ */
# Librewolf: a privacy-focused Firefox fork librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
librewolf.enable = true; ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
# Ungoogled Chromium: a privacy-focused Chromium fork
ungoogled-chromium.enable = true;
/* /*
System utilities System utilities
*/ */
# Btop: a resource monitor for the terminal btop.enable = true; # Btop: a resource monitor for the terminal
btop.enable = true; cava.enable = false; # Cava: terminal audio visualizer
# Cava: terminal audio visualizer fastfetch.enable = true; # Fastfetch: a fast system information tool
cava.enable = false;
# Fastfetch: a fast system information tool
fastfetch.enable = true;
/* /*
Communication and synchronization Communication and synchronization
*/ */
# KDE Connect: integrate your phone and desktop kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
kdeconnect.enable = false; nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
# Nextcloud Client: sync files with a Nextcloud server vesktop.enable = true; # Vesktop: a communitydriven Discord client
nextcloud-client.enable = true;
# Vesktop: a communitydriven Discord client
vesktop.enable = true;
/* /*
Gaming Gaming
*/ */
# Lutris: an open gaming platform lutris.enable = false; # Lutris: an open gaming platform
lutris.enable = false;
/* /*
Media recording and streaming Media recording and streaming
*/ */
# OBS Studio: streaming and recording software obs-studio.enable = false; # OBS Studio: streaming and recording software
obs-studio.enable = false;
/* /*
Office suite Office suite
*/ */
# OnlyOffice: an office suite compatible with Microsoft formats onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats
onlyoffice.enable = true;
/* /*
Learning tools Learning tools
*/ */
# Anki: spacedrepetition flashcard program anki.enable = true; # Anki: spacedrepetition flashcard program
anki.enable = true;
/*
XDG desktop entries (PWA)
*/
xdgDesktopEntries = {
enable = true; # Enable XDG desktop entries
entries = {
messenger.enable = true; # Messenger: Facebook Messenger
mastodon.enable = true; # Mastodon: a decentralized social network
garandcloud.enable = true; # GarandCloud: my Nextcloud instance
chatgpt.enable = true; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard
};
};
} }

View File

@@ -2,86 +2,89 @@ _: {
/* /*
Container & Packaging Container & Packaging
*/ */
# Docker: container runtime and management docker.enable = true; # Docker: container runtime and management
docker.enable = true; virtualbox.enable = false; # VirtualBox: PC emulator
# Distrobox: containerized development environments flatpak = {
distrobox.enable = false; enable = true; # Flatpak: universal packaging system for Linux
# Flatpak: universal packaging system for Linux packages = {
flatpak.enable = true; sober.enable = false; # Roblox client
# Lazydocker: simple TUI for Docker warehouse.enable = true; # Flatpak manager
lazydocker.enable = false; flatseal.enable = true; # Flatpak permissions manager
};
};
/*
Networking
*/
tailscale.enable = false; # Tailscale: secure network for remote access
/* /*
Gaming Gaming
*/ */
# GameMode: optimizes system performance for gaming gamemode.enable = true; # GameMode: optimizes system performance for gaming
gamemode.enable = true; gamescope.enable = false; # Gamescope: microcompositor for games
# Gamescope: micro-compositor for games steam.enable = true; # Steam: platform for buying and playing games
gamescope.enable = false;
# Prism Launcher: Minecraft modded launcher packages = {
prismlauncher.enable = false; /*
# Steam: platform for buying and playing games Container & Packaging
steam.enable = true; */
# SpaceCadet Pinball: classic pinball game distrobox.enable = false; # Distrobox: containerized development environments
spaceCadetPinball.enable = true; lazydocker.enable = false; # Lazydocker: simple TUI for Docker
# TTY Solitaire: terminal based solitaire game bottles.enable = false; # Bottles: Easy-to-use wineprefix manager
ttySolitaire.enable = true;
/*
Gaming
*/
prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher
spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = true; # TTY Solitaire: terminalbased solitaire game
heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
/* /*
Development Tools Development Tools
*/ */
# Exercism: coding practice platform exercism.enable = true; # Exercism: coding practice platform
exercism.enable = true; lazygit.enable = false; # Lazygit: simple TUI for Git
# Gedit: GNOME text editor opencode.enable = false; # OpenCode: tools for coding and development
gedit.enable = false; jan.enable = true; # Jan: AI chat UI
# Lazygit: simple TUI for git logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
lazygit.enable = false;
# OpenCode: tools for coding and development
opencode.enable = true;
/* /*
Communication & Collaboration Communication & Collaboration
*/ */
# Mattermost: open-source Slack alternative mattermost.enable = true; # Mattermost: opensource Slack alternative
mattermost.enable = true; slack.enable = true; # Slack: team communication and collaboration tool
# Slack: team communication and collaboration tool tutanota.enable = true; # Tutanota: secure email client
slack.enable = true; signal.enable = true; # Signal: secure messaging app
# Tutanota: secure email client teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
tutanota.enable = true; ferdium.enable = false; # Ferdium: All your services in one place built by the community
/* /*
Productivity / Knowledge Management Productivity / Knowledge Management
*/ */
# Bitwarden: password manager (desktop) bitwarden.enable = false; # Bitwarden: password manager (desktop)
bitwarden.enable = false; iotas.enable = true; # Iotas: lightweight notes manager
# Iotas: lightweight notes manager logseq.enable = false; # Logseq: knowledge base and outliner
iotas.enable = true;
# Logseq: knowledge base and outliner
logseq.enable = false;
/* /*
Media & Graphics Media & Graphics
*/ */
# Affinity: professional graphics suite affinity.enable = false; # Affinity: professional graphics suite
affinity.enable = false; eyeOfGnome.enable = true; # Eye of GNOME: image viewer
# Eye of GNOME: image viewer freetube.enable = false; # FreeTube: privacyfriendly YouTube client
eyeOfGnome.enable = true; gimp.enable = false; # GIMP: GNU Image Manipulation Program
# FreeTube: privacyfriendly YouTube client kdenlive.enable = false; # Kdenlive: video editing software
freetube.enable = false; pixieditor.enable = false; # Pixieditor: Universal editor for all your 2D needs
# GIMP: gnu image manipulation program plex.enable = true; # Plex: media player and server client
gimp.enable = false;
# Kdenlive: video editing software
kdenlive.enable = false;
# Plex: media player and server client
plex.enable = true;
/* /*
Utilities / Misc Utilities / Misc
*/ */
# Eddie AirVPN: VPN client eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
eddieAirVPN.enable = true; galculator.enable = false; # Galculator: simple calculator
# Galculator: simple calculator gedit.enable = false; # Gedit: GNOME text editor
galculator.enable = true; winboat.enable = false; # Winboat: Windows remote desktop via RDP
# Winboat: Windows remote desktop via RDP adb.enable = false; # ADB: Android SDK platform tools
winboat.enable = false; };
} }

View File

@@ -25,22 +25,11 @@
"; ";
# Waybar Settings
clock24h = true;
# Program Options
# Set Default Browser (google-chrome-stable for google-chrome)
# This does NOT install your browser
# You need to install it by adding it to the `packages.nix`
# or as a flatpak
browser = "librewolf";
# Setting it here does not enable it. Kitty is installed by default
terminal = "kitty"; # Set Default System Terminal
keyboardLayout = "pl"; keyboardLayout = "pl";
consoleKeyMap = "pl"; consoleKeyMap = "pl";
location = "Warszawa, PL";
# For Nvidia Prime support # For Nvidia Prime support
intelID = "PCI:1:0:0"; intelID = "PCI:1:0:0";
nvidiaID = "PCI:0:2:0"; nvidiaID = "PCI:0:2:0";
@@ -59,44 +48,19 @@
# This will set your color palette # This will set your color palette
# Default background # Default background
# Add new images to ~/garandos/wallpapers # Add new images to ~/garandos/wallpapers
stylixImage = ../../wallpapers/attack-on-titan-mikasa-ackerman.jpg; stylixImage = "attack-on-titan-mikasa-ackerman.jpg";
#stylixImage = ../../wallpapers/DW_Pacts.jpg; #stylixImage = "DW_Pacts.jpg";
#stylixImage = ../../wallpapers/edward-elric-fullmetal-alchemist.jpg; #stylixImage = "edward-elric-fullmetal-alchemist.jpg";
#stylixImage = ../../wallpapers/fire-nation.jpg; #stylixImage = "fire-nation.jpg";
#stylixImage = ../../wallpapers/four-elements.jpg; #stylixImage = "four-elements.jpg";
#stylixImage = ../../wallpapers/fullmetal-alchemist-5120x2880-10399.png; #stylixImage = "fullmetal-alchemist-5120x2880-10399.png";
#stylixImage = ../../wallpapers/Grounded_Wallpaper_4K.jpg; #stylixImage = "Grounded_Wallpaper_4K.jpg";
#stylixImage = ../../wallpapers/jablon.jpg; #stylixImage = "jablon.jpg";
#stylixImage = ../../wallpapers/rammstein-log-two.jpg; #stylixImage = "rammstein-log-two.jpg";
#stylixImage = ../../wallpapers/rammstein-logo-one.jpg; #stylixImage = "rammstein-logo-one.jpg";
#stylixImage = ../../wallpapers/rammstein-logo-three.jpg; #stylixImage = "rammstein-logo-three.jpg";
#stylixImage = ../../wallpapers/rammstein-one.jpg; #stylixImage = "rammstein-one.jpg";
#stylixImage = ../../wallpapers/1346530.jpeg; #stylixImage = "1346530.jpeg";
# Set Waybar
# Available Options:
waybarChoice = ../../modules/home/waybar/waybar-curved.nix;
#waybarChoice = ../../modules/home/waybar/waybar-ddubs.nix;
#waybarChoice = ../../modules/home/waybar/waybar-ddubs-2.nix;
#waybarChoice = ../../modules/home/waybar/waybar-simple.nix;
# Throwback to GarandOS v1.0
#waybarChoice = ../../modules/home/waybar/waybar-jerry.nix;
# Very colorful and bright colors
#waybarChoice = ../../modules/home/waybar/waybar-nekodyke.nix;
# DWM styled waybars from Matt at TheLinuxCast
#waybarChoice = ../../modules/home/waybar/waybar-dwm.nix;
#waybarChoice = ../../modules/home/waybar/waybar-dwm-2.nix;
# Set Animation style
# Available options are:
# animations-def.nix (default)
# animations-end4.nix (end-4 project very fluid)
# animations-dynamic.nix (ml4w project)
# animations-moving.nix (ml4w project)
animChoice = ../../modules/home/hyprland/animations-def.nix;
#animChoice = ../../modules/home/hyprland/animations-end4.nix;
#animChoice = ../../modules/home/hyprland/animations-dynamic.nix;
#animChoice = ../../modules/home/hyprland/animations-moving.nix;
# Set network hostId if required (needed for zfs) # Set network hostId if required (needed for zfs)
# Otherwise leave as-is # Otherwise leave as-is

View File

@@ -1,16 +0,0 @@
_: {
programs.auto-cpufreq = {
enable = true;
settings = {
charger = {
governor = "performance";
turbo = "auto";
};
battery = {
governor = "powersave";
turbo = "auto";
};
};
};
}

View File

@@ -19,7 +19,7 @@
wallpapers = [ wallpapers = [
./../../wallpapers/attack-on-titan-mikasa-ackerman.jpg ./../../wallpapers/attack-on-titan-mikasa-ackerman.jpg
]; ];
wallpaperStyle = lib.mkDefault "centered"; wallpaperStyle = lib.mkForce "centered";
backdrop = "${config.stylix.base16Scheme.base00}"; backdrop = "${config.stylix.base16Scheme.base00}";
interface = { interface = {
branding = "GarandOS Bootloader"; branding = "GarandOS Bootloader";

View File

@@ -1,16 +1,17 @@
{inputs, ...}: { {inputs, ...}: {
imports = [ imports = [
./packages ./packages
./auto-cpufreq.nix
./boot.nix ./boot.nix
./docker.nix ./docker.nix
./flatpak.nix ./flatpak.nix
./fonts.nix ./fonts.nix
./garandos-tui.nix
./hardware.nix ./hardware.nix
./network.nix ./network.nix
./nfs.nix ./nfs.nix
./nh.nix ./nh.nix
./printing.nix ./printing.nix
./quickshell.nix
./greetd.nix ./greetd.nix
./security.nix ./security.nix
./services.nix ./services.nix
@@ -18,8 +19,10 @@
./stylix.nix ./stylix.nix
./syncthing.nix ./syncthing.nix
./system.nix ./system.nix
./tailscale.nix
./thunar.nix ./thunar.nix
./user.nix ./user.nix
./virtualbox.nix
./xdg.nix ./xdg.nix
./xserver.nix ./xserver.nix
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix

View File

@@ -2,16 +2,27 @@
lib, lib,
config, config,
... ...
}: { }: let
mkFlatpakPackage = name: pkgId: {
options.flatpak.packages.${name}.enable = lib.mkEnableOption "Flatpak: ${name}";
config.services.flatpak.packages =
lib.mkIf config.flatpak.packages.${name}.enable [pkgId];
};
flatpakPackages = {
sober = "org.vinegarhq.Sober";
warehouse = "io.github.flattool.Warehouse";
flatseal = "com.github.tchx84.Flatseal";
};
in {
options.flatpak.enable = lib.mkEnableOption "Flatpak"; options.flatpak.enable = lib.mkEnableOption "Flatpak";
config.services.flatpak = lib.mkIf config.flatpak.enable { config.services.flatpak = lib.mkIf config.flatpak.enable {
enable = true; enable = true;
update.onActivation = true; update.onActivation = true;
packages = [ packages = [];
# "org.vinegarhq.Sober"
"io.github.flattool.Warehouse"
"com.github.tchx84.Flatseal"
];
}; };
imports = builtins.attrValues (builtins.mapAttrs mkFlatpakPackage flatpakPackages);
} }

View File

@@ -0,0 +1,11 @@
{
host,
username,
...
}: {
programs.garandos-tui = {
enable = true;
systemModulesFilePath = "/home/${username}/garandos/hosts/${host}/system-modules.nix";
homeModulesFilePath = "/home/${username}/garandos/hosts/${host}/home-modules.nix";
};
}

View File

@@ -12,6 +12,7 @@
file-roller file-roller
unrar unrar
unzip unzip
p7zip
# System monitoring & info # System monitoring & info
inxi inxi
lm_sensors lm_sensors
@@ -52,5 +53,20 @@
hunspell hunspell
hunspellDicts.pl_PL hunspellDicts.pl_PL
hunspellDicts.en_US hunspellDicts.en_US
# Noctalia Shell Dependencies
matugen
app2unit
gpu-screen-recorder
# hyprland
swww
grim
slurp
wl-clipboard
swappy
ydotool
hyprpolkitagent
hyprland-qtutils # needed for banners and ANR messages
# pyprland
pyprland
]; ];
} }

View File

@@ -7,9 +7,9 @@
... ...
}: let }: let
mkPackage = name: pkgsOrList: { mkPackage = name: pkgsOrList: {
options.${name}.enable = lib.mkEnableOption name; options.packages.${name}.enable = lib.mkEnableOption name;
config.environment.systemPackages = config.environment.systemPackages =
lib.mkIf config.${name}.enable lib.mkIf config.packages.${name}.enable
(lib.toList pkgsOrList); (lib.toList pkgsOrList);
}; };
@@ -25,6 +25,7 @@
tutanota = tutanota-desktop; tutanota = tutanota-desktop;
exercism = exercism; exercism = exercism;
opencode = opencode; opencode = opencode;
jan = jan;
lazygit = lazygit; lazygit = lazygit;
prismlauncher = inputs.prismlauncher-cracked.packages.${system}.default; prismlauncher = inputs.prismlauncher-cracked.packages.${system}.default;
spaceCadetPinball = space-cadet-pinball; spaceCadetPinball = space-cadet-pinball;
@@ -41,6 +42,14 @@
lazydocker = lazydocker; lazydocker = lazydocker;
distrobox = [distrobox pkgs.boxbuddy]; distrobox = [distrobox pkgs.boxbuddy];
winboat = [winboat freerdp]; winboat = [winboat freerdp];
signal = signal-desktop;
pixieditor = pixieditor;
bottles = bottles;
heroic = heroic;
adb = android-tools;
teams = teams-for-linux;
ferdium = ferdium;
logisim-evolution = logisim-evolution;
}; };
in { in {
imports = builtins.attrValues (builtins.mapAttrs mkPackage packages); imports = builtins.attrValues (builtins.mapAttrs mkPackage packages);

View File

@@ -1,7 +1,3 @@
# {
# pkgs
# ...
# }
_: { _: {
programs = { programs = {
nano.enable = true; nano.enable = true;
@@ -13,8 +9,6 @@ _: {
seahorse.enable = true; seahorse.enable = true;
fuse.userAllowOther = true; fuse.userAllowOther = true;
mtr.enable = true; mtr.enable = true;
adb.enable = true;
hyprlock.enable = true;
gnupg.agent = { gnupg.agent = {
enable = true; enable = true;
enableSSHSupport = true; enableSSHSupport = true;

View File

@@ -0,0 +1,30 @@
{pkgs, ...}: {
environment = {
systemPackages = with pkgs; [
quickshell
# Qt6 related kitsfor slove Qt5Compat problem
qt6.qt5compat
qt6.qtbase
qt6.qtquick3d
qt6.qtwayland
qt6.qtdeclarative
qt6.qtsvg
# alternate options
# libsForQt5.qt5compat
kdePackages.qt5compat
libsForQt5.qt5.qtgraphicaleffects
];
# necessary environment variables
variables = {
QML_IMPORT_PATH = "${pkgs.qt6.qt5compat}/lib/qt-6/qml:${pkgs.qt6.qtbase}/lib/qt-6/qml";
QML2_IMPORT_PATH = "${pkgs.qt6.qt5compat}/lib/qt-6/qml:${pkgs.qt6.qtbase}/lib/qt-6/qml";
};
# make sure the Qt application is working properly
sessionVariables = {
QT_QPA_PLATFORM = "wayland;xcb";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
};
};
}

View File

@@ -1,4 +1,8 @@
{profile, ...}: { {
profile,
pkgs,
...
}: {
# Services to start # Services to start
services = { services = {
libinput.enable = true; # Input Handling libinput.enable = true; # Input Handling
@@ -13,10 +17,11 @@
}; };
ports = [22]; ports = [22];
}; };
blueman.enable = true; # Bluetooth Support
tumbler.enable = true; # Image/video preview tumbler.enable = true; # Image/video preview
gnome.gnome-keyring.enable = true; gnome = {
gnome-keyring.enable = true;
evolution-data-server.enable = true;
};
smartd = { smartd = {
enable = enable =
if profile == "vm" if profile == "vm"
@@ -53,5 +58,13 @@
]; ];
}; };
}; };
upower = {
enable = true;
package = pkgs.upower;
};
power-profiles-daemon = {
enable = true;
package = pkgs.power-profiles-daemon;
};
}; };
} }

View File

@@ -8,25 +8,7 @@ in {
# Styling Options # Styling Options
stylix = { stylix = {
enable = true; enable = true;
image = stylixImage; image = ../../wallpapers/${stylixImage};
# base16Scheme = {
# base00 = "282936";
# base01 = "3a3c4e";
# base02 = "4d4f68";
# base03 = "626483";
# base04 = "62d6e8";
# base05 = "e9e9f4";
# base06 = "f1f2f8";
# base07 = "f7f7fb";
# base08 = "ea51b2";
# base09 = "b45bcf";
# base0A = "00f769";
# base0B = "ebff87";
# base0C = "a1efe4";
# base0D = "62d6e8";
# base0E = "b45bcf";
# base0F = "00f769";
# };
polarity = "dark"; polarity = "dark";
opacity.terminal = 1.0; opacity.terminal = 1.0;
cursor = { cursor = {
@@ -36,16 +18,16 @@ in {
}; };
fonts = { fonts = {
monospace = { monospace = {
package = pkgs.nerd-fonts.jetbrains-mono; package = pkgs.nerd-fonts.fira-mono;
name = "JetBrains Mono"; name = "FiraCode Nerd Font Mono";
}; };
sansSerif = { sansSerif = {
package = pkgs.montserrat; package = pkgs.nerd-fonts.fira-code;
name = "Montserrat"; name = "FiraCode Nerd Font Propo";
}; };
serif = { serif = {
package = pkgs.montserrat; package = pkgs.nerd-fonts.fira-code;
name = "Montserrat"; name = "FiraCode Nerd Font";
}; };
sizes = { sizes = {
applications = 12; applications = 12;

View File

@@ -0,0 +1,14 @@
{
pkgs,
config,
lib,
...
}: {
options.tailscale.enable = lib.mkEnableOption "Tailscale";
config.services.tailscale = lib.mkIf config.tailscale.enable {
enable = true;
package = pkgs.tailscale;
openFirewall = true;
};
}

View File

@@ -1,7 +1,7 @@
{pkgs, ...}: { {pkgs, ...}: {
programs.thunar = { programs.thunar = {
enable = true; enable = true;
plugins = with pkgs.xfce; [ plugins = with pkgs; [
thunar-archive-plugin thunar-archive-plugin
thunar-volman thunar-volman
]; ];

View File

@@ -24,7 +24,11 @@ in {
; ;
}; };
users.${username} = { users.${username} = {
imports = [./../home ../../hosts/${host}/home-modules.nix]; imports = [
./../home
../../hosts/${host}/home-modules.nix
inputs.noctalia.homeModules.default
];
home = { home = {
username = "${username}"; username = "${username}";
homeDirectory = "/home/${username}"; homeDirectory = "/home/${username}";

View File

@@ -0,0 +1,17 @@
{
pkgs,
lib,
config,
...
}: {
options.virtualbox.enable = lib.mkEnableOption "Enable VirtualBox";
config.virtualisation.virtualbox.host = lib.mkIf config.virtualbox.enable {
enable = true;
package = pkgs.virtualbox;
enableKvm = true;
enableHardening = true;
enableExtensionPack = false;
addNetworkInterface = false;
};
}

View File

@@ -36,7 +36,7 @@ in {
# accessible via `nvidia-settings`. # accessible via `nvidia-settings`.
nvidiaSettings = true; nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU. # Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.stable; package = config.boot.kernelPackages.nvidiaPackages.beta;
}; };
}; };
}; };

View File

@@ -8,10 +8,12 @@
pullos = "git -C /home/${username}/garandos pull"; pullos = "git -C /home/${username}/garandos pull";
upd = "nh os switch --hostname ${host}"; upd = "nh os switch --hostname ${host}";
upg = "nh os switch --hostname ${host} --update"; upg = "nh os switch --hostname ${host} --update";
upf = "sudo nix flake update"; upf = "sudo nix flake update --flake /home/${username}/garandos";
upf-undo = "git -C /home/${username}/garandos restore /home/${username}/garandos/flake.lock";
upd-bt = "nh os boot --hostname ${host}"; upd-bt = "nh os boot --hostname ${host}";
upd-ts = "nh os test --hostname ${host}"; upd-ts = "nh os test --hostname ${host}";
upd-bd = "nh os build --hostname ${host}"; upd-bd = "nh os build --hostname ${host}";
tui = "garandos-tui";
ncg = "nh clean all"; ncg = "nh clean all";
# Development aliases # Development aliases
@@ -20,8 +22,8 @@
pm = "uv run manage.py"; pm = "uv run manage.py";
f8 = "uv run flake8 ."; f8 = "uv run flake8 .";
bbr = "bun --bun run"; bbr = "bun --bun run";
"ga." = "git add .";
mkgidf = "git add . --intent-to-add . && git diff > git-diff.txt"; mkgidf = "git add . --intent-to-add . && git diff > git-diff.txt";
zed = "MANGOHUD=0 /home/${username}/.local/bin/zed";
# Development aliases for nix flake # Development aliases for nix flake
nd = "nix develop"; nd = "nix develop";
@@ -32,6 +34,12 @@
nrd = "nix run .#develop"; nrd = "nix run .#develop";
nbrd = "nix build .#develop && nix run .#develop"; nbrd = "nix build .#develop && nix run .#develop";
# Development aliases for docker
dcu = "docker compose up -d";
dcd = "docker compose down";
dcb = "docker compose build";
dcub = "docker compose up -d --build";
# System aliases # System aliases
# flush-codium = "sudo killall codium && sudo rm -rf ~/.config/VSCodium/Cache && sudo rm -rf ~/.config/VSCodium/CachedData"; # flush-codium = "sudo killall codium && sudo rm -rf ~/.config/VSCodium/Cache && sudo rm -rf ~/.config/VSCodium/CachedData";
kys = "shutdown now"; kys = "shutdown now";
@@ -122,7 +130,9 @@
fc = "fortune | cowsay"; fc = "fortune | cowsay";
# Network aliases # Network aliases
kssh-server = "kssh garand_plg@192.168.1.156 -i ~/.ssh/hp-t640-homeserver"; kssh-server = "kssh hp-t640-homeserver";
ssh-server = "ssh garand_plg@192.168.1.156 -i ~/.ssh/hp-t640-homeserver"; kssh-server-ts = "kssh hp-t640-homeserver-tailscale";
ssh-server = "ssh hp-t640-homeserver";
ssh-server-ts = "ssh hp-t640-homeserver-tailscale";
}; };
} }

View File

@@ -1,6 +1,4 @@
{host, ...}: let _: {
inherit (import ../../hosts/${host}/variables.nix) waybarChoice;
in {
imports = [ imports = [
./bash ./bash
./chromium ./chromium
@@ -8,12 +6,9 @@ in {
./hyprland ./hyprland
./kitty ./kitty
./librewolf ./librewolf
./rofi ./noctalia
./scripts ./scripts
./swaync
./vscodium ./vscodium
waybarChoice
./wlogout
./xdg ./xdg
./zed ./zed
./anki.nix ./anki.nix

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -1,22 +0,0 @@
_: {
wayland.windowManager.hyprland.settings = {
animations = {
enabled = true;
bezier = [
"wind, -1.05, 0.9, 0.1, 1.05"
"winIn, -1.1, 1.1, 0.1, 1.1"
"winOut, -1.3, -0.3, 0, 1"
"liner, 0, 1, 1, 1"
];
animation = [
"windows, 0, 6, wind, slide"
"windowsIn, 0, 6, winIn, slide"
"windowsOut, 0, 5, winOut, slide"
"windowsMove, 0, 5, wind, slide"
"border, 0, 1, liner"
"fade, 0, 10, default"
"workspaces, 0, 5, wind"
];
};
};
}

View File

@@ -1,25 +0,0 @@
_: {
wayland.windowManager.hyprland.settings = {
# name "Dynamic"
# credit https://github.com/mylinuxforwork/dotfiles
animations = {
enabled = true;
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"
];
animation = [
"windows, 1, 6, wind, slide"
"windowsIn, 1, 6, winIn, slide"
"windowsOut, 1, 5, winOut, slide"
"windowsMove, 1, 5, wind, slide"
"border, 1, 1, liner"
"borderangle, 1, 30, liner, loop"
"fade, 1, 10, default"
"workspaces, 1, 5, wind"
];
};
};
}

View File

@@ -1,37 +0,0 @@
_: {
wayland.windowManager.hyprland.settings = {
# Name: END-4
# Credit: END-4 project https://github.com/end-4/dots-hyprland
animations = {
enabled = true;
bezier = [
"linear, 0, 0, 1, 1"
"md3_standard, 0.2, 0, 0, 1"
"md3_decel, 0.05, 0.7, 0.1, 1"
"md3_accel, 0.3, 0, 0.8, 0.15"
"overshot, 0.05, 0.9, 0.1, 1.1"
"crazyshot, 0.1, 1.5, 0.76, 0.92 "
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
"menu_decel, 0.1, 1, 0, 1"
"menu_accel, 0.38, 0.04, 1, 0.07"
"easeInOutCirc, 0.85, 0, 0.15, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutExpo, 0.16, 1, 0.3, 1"
"softAcDecel, 0.26, 0.26, 0.15, 1"
"md2, 0.4, 0, 0.2, 1 # use with .2s duration"
];
animation = [
"windows, 1, 3, md3_decel, popin 60%"
"windowsIn, 1, 3, md3_decel, popin 60%"
"windowsOut, 1, 3, md3_accel, popin 60%"
"border, 1, 10, default"
"fade, 1, 3, md3_decel"
"layersIn, 1, 3, menu_decel, slide"
"layersOut, 1, 1.6, menu_accel"
"fadeLayersIn, 1, 2, menu_decel"
"fadeLayersOut, 1, 4.5, menu_accel"
"workspaces, 1, 7, menu_decel, slide"
];
};
};
}

View File

@@ -1,24 +0,0 @@
_: {
wayland.windowManager.hyprland.settings = {
# name "moving"
# credit https://github.com/mylinuxforwork/dotfiles
animations = {
enabled = true;
bezier = [
"overshot, 0.05, 0.9, 0.1, 1.05"
"smoothOut, 0.5, 0, 0.99, 0.99"
"smoothIn, 0.5, -0.5, 0.68, 1.5"
];
animation = [
"windows, 1, 5, overshot, slide"
"windowsOut, 1, 3, smoothOut"
"windowsIn, 1, 3, smoothOut"
"windowsMove, 1, 4, smoothIn, slide"
"border, 1, 5, default"
"fade, 1, 5, smoothIn"
"fadeDim, 1, 5, smoothIn"
"workspaces, 1, 6, default"
];
};
};
}

View File

@@ -0,0 +1,33 @@
_: {
wayland.windowManager.hyprland.settings.animations = {
enabled = true;
bezier = [
"linear, 0, 0, 1, 1"
"md3_standard, 0.2, 0, 0, 1"
"md3_decel, 0.05, 0.7, 0.1, 1"
"md3_accel, 0.3, 0, 0.8, 0.15"
"overshot, 0.05, 0.9, 0.1, 1.1"
"crazyshot, 0.1, 1.5, 0.76, 0.92 "
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
"menu_decel, 0.1, 1, 0, 1"
"menu_accel, 0.38, 0.04, 1, 0.07"
"easeInOutCirc, 0.85, 0, 0.15, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutExpo, 0.16, 1, 0.3, 1"
"softAcDecel, 0.26, 0.26, 0.15, 1"
"md2, 0.4, 0, 0.2, 1 # use with .2s duration"
];
animation = [
"windows, 1, 3, md3_decel, popin 60%"
"windowsIn, 1, 3, md3_decel, popin 60%"
"windowsOut, 1, 3, md3_accel, popin 60%"
"border, 1, 10, default"
"fade, 1, 3, md3_decel"
"layersIn, 1, 3, menu_decel, slide"
"layersOut, 1, 1.6, menu_accel"
"fadeLayersIn, 1, 2, menu_decel"
"fadeLayersOut, 1, 4.5, menu_accel"
"workspaces, 1, 7, menu_decel, slide"
];
};
}

View File

@@ -1,166 +1,165 @@
{ {
host, lib,
username, username,
... ...
}: let }: let
inherit (import ../../../hosts/${host}/variables.nix) browser terminal;
desktopEntriesPath = "/home/${username}/.local/state/home-manager/gcroots/current-home/home-path/share/applications/"; desktopEntriesPath = "/home/${username}/.local/state/home-manager/gcroots/current-home/home-path/share/applications/";
in {
wayland.windowManager.hyprland.settings = {
bind = [
# =============================================================================
# APLIKACJE - GŁÓWNE
# =============================================================================
"$modifier, A, exec, anki"
"$modifier, B, exec, bitwarden"
"$modifier, C, exec, chromium"
"$modifier, D, exec, vesktop"
"$modifier, G, exec, affinity-v3"
"$modifier, I, exec, iotas"
"$modifier, L, exec, logseq"
"$modifier, M, exec, plexamp"
"$modifier, N, exec, dex ${desktopEntriesPath}/garandcloud.desktop"
"$modifier, O, exec, obs"
"$modifier, Return, exec, ${terminal}"
"$modifier, S, exec, steam"
"$modifier, T, exec, thunar"
"$modifier, V, exec, codium"
"$modifier, W, exec, ${browser}"
"$modifier, Z, exec, zeditor"
# ============================================================================= mainBinds = [
# APLIKACJE - Z SHIFT "SUPER, A, exec, anki #\"Flashcard learning application\""
# ============================================================================= "SUPER, B, exec, bitwarden #\"Password manager\""
"$modifier SHIFT, B, exec, blueman-manager" "SUPER, C, exec, chromium #\"Ungoogled Chromium\""
"$modifier SHIFT, C, exec, dex ${desktopEntriesPath}/claude.desktop" "SUPER, D, exec, vesktop #\"Discord client\""
"$modifier SHIFT, G, exec, dex ${desktopEntriesPath}/chatgpt.desktop" "SUPER, E, exec, noctalia-shell ipc call launcher emoji #\"Emoji picker\""
"$modifier SHIFT, M, exec, dex ${desktopEntriesPath}/messenger.desktop" "SUPER, Escape, exec, noctalia-shell ipc call lockScreen lock #\"Lock the screen\""
"$modifier SHIFT, N, exec, nextcloud" "SUPER, G, exec, affinity-v3 #\"Graphics editor\""
"$modifier SHIFT, O, exec, onlyoffice-desktopeditors" "SUPER, I, exec, iotas #\"Note-taking app\""
"$modifier SHIFT, Return, exec, rofi-launcher" "SUPER, J, exec, Jan #\"Local AI chat interface\""
"$modifier SHIFT, T, exec, tutanota-desktop" "SUPER, K, exec, galculator #\"Scientific calculator\""
"$modifier SHIFT, W, exec, web-search" "SUPER, L, exec, logseq #\"Knowledge management tool\""
"SUPER, M, exec, plexamp #\"Music player for Plex\""
# ============================================================================= "SUPER, N, exec, dex ${desktopEntriesPath}/garandcloud.desktop #\"GarandCloud client\""
# APLIKACJE - Z ALT "SUPER, O, exec, onlyoffice-desktopeditors #\"Office suite\""
# ============================================================================= "SUPER, P, exec, plex-desktop #\"Plex media player\""
"$modifier ALT, G, exec, dex ${desktopEntriesPath}/glance.desktop" "SUPER, Return, exec, kitty #\"Kitty terminal\""
"$modifier ALT, M, exec, dex ${desktopEntriesPath}/mastodon.desktop" "SUPER, S, exec, steam #\"Steam Game launcher\""
"$modifier ALT, S, exec, slack" "SUPER, T, exec, thunar #\"File manager\""
"$modifier ALT, T, exec, gedit" "SUPER, V, exec, codium #\"VS Codium\""
"SUPER, W, exec, librewolf #\"Main Web browser (Librewolf)\""
# ============================================================================= "SUPER, Z, exec, zeditor #\"Zed IDE\""
# APLIKACJE - Z CONTROL
# =============================================================================
"$modifier CONTROL, G, exec, gimp"
"$modifier CONTROL, M, exec, mattermost-desktop"
# =============================================================================
# NARZĘDZIA SYSTEMOWE
# =============================================================================
"$modifier, E, exec, emopicker9000"
"$modifier, K, exec, galculator"
"$modifier, P, exec, hyprpicker -a"
"$modifier ALT, W, exec, wallsetter"
"$modifier SHIFT, K, exec, list-keybinds"
"$modifier SHIFT, P, exec, pavucontrol"
"$modifier SHIFT, S, exec, screenshootin"
# =============================================================================
# ZARZĄDZANIE OKNAMI
# =============================================================================
"$modifier, Escape, exec, hyprlock"
"$modifier, F, fullscreen,"
"$modifier, Q, killactive,"
"$modifier CONTROL, Escape, exec, wlogout"
"$modifier SHIFT, Escape, exit,"
"$modifier SHIFT, I, togglesplit,"
# =============================================================================
# FOKUS OKIEN
# =============================================================================
"$modifier, down, movefocus, d"
"$modifier, left, movefocus, l"
"$modifier, right, movefocus, r"
"$modifier, up, movefocus, u"
# =============================================================================
# PRZEMIESZCZANIE OKIEN
# =============================================================================
"$modifier SHIFT, down, movewindow, d"
"$modifier SHIFT, left, movewindow, l"
"$modifier SHIFT, right, movewindow, r"
"$modifier SHIFT, up, movewindow, u"
# =============================================================================
# ZAMIANA OKIEN
# =============================================================================
"$modifier ALT, down, swapwindow, d"
"$modifier ALT, left, swapwindow, l"
"$modifier ALT, right, swapwindow, r"
"$modifier ALT, up, swapwindow, u"
# =============================================================================
# WORKSPACES - PRZEŁĄCZANIE
# =============================================================================
"$modifier, 0, workspace, 10"
"$modifier, 1, workspace, 1"
"$modifier, 2, workspace, 2"
"$modifier, 3, workspace, 3"
"$modifier, 4, workspace, 4"
"$modifier, 5, workspace, 5"
"$modifier, 6, workspace, 6"
"$modifier, 7, workspace, 7"
"$modifier, 8, workspace, 8"
"$modifier, 9, workspace, 9"
"$modifier CONTROL, left, workspace, e-1"
"$modifier CONTROL, right, workspace, e+1"
"$modifier, mouse_down, workspace, e+1"
"$modifier, mouse_up, workspace, e-1"
# =============================================================================
# WORKSPACES - PRZENOSZENIE OKIEN
# =============================================================================
"$modifier SHIFT, 0, movetoworkspace, 10"
"$modifier SHIFT, 1, movetoworkspace, 1"
"$modifier SHIFT, 2, movetoworkspace, 2"
"$modifier SHIFT, 3, movetoworkspace, 3"
"$modifier SHIFT, 4, movetoworkspace, 4"
"$modifier SHIFT, 5, movetoworkspace, 5"
"$modifier SHIFT, 6, movetoworkspace, 6"
"$modifier SHIFT, 7, movetoworkspace, 7"
"$modifier SHIFT, 8, movetoworkspace, 8"
"$modifier SHIFT, 9, movetoworkspace, 9"
# =============================================================================
# MEDIA I KONTROLKI SYSTEMOWE
# =============================================================================
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
",XF86AudioNext, exec, playerctl next"
",XF86AudioPause, exec, playerctl play-pause"
",XF86AudioPlay, exec, playerctl play-pause"
",XF86AudioPrev, exec, playerctl previous"
",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
",XF86MonBrightnessDown, exec, brightnessctl set 5%-"
",XF86MonBrightnessUp, exec, brightnessctl set +5%"
# =============================================================================
# NIEUŻYWANE KEYBINDY
# =============================================================================
# "$modifier SHIFT, N, exec, swaync-client -rs"
# "$modifier, P, pseudo,"
# "$modifier SHIFT,F, togglefloating,"
# "$modifier ALT,F, workspaceopt, allfloat"
# "$modifier SHIFT, SPACE, movetoworkspace, special"
# "$modifier, SPACE, togglespecialworkspace"
# "ALT,Tab,cyclenext"
# "ALT,Tab,bringactivetotop"
]; ];
shiftBinds = [
"SUPER SHIFT, C, exec, dex ${desktopEntriesPath}/claude.desktop #\"Claude AI chat\""
"SUPER SHIFT, Escape, exec, noctalia-shell ipc call sessionMenu toggle #\"Open Session Menu\""
"SUPER SHIFT, G, exec, dex ${desktopEntriesPath}/chatgpt.desktop #\"ChatGPT AI chat\""
"SUPER SHIFT, K, exec, noctalia-shell ipc call plugin:keybind-cheatsheet toggle #\"Toggle keybind cheatsheet\""
"SUPER SHIFT, M, exec, dex ${desktopEntriesPath}/messenger.desktop #\"Facebook Messenger client\""
"SUPER SHIFT, N, exec, nextcloud #\"Nextcloud desktop sync client\""
"SUPER SHIFT, O, exec, obs #\"Open Broadcaster Software\""
"SUPER SHIFT, P, exec, noctalia-shell ipc call volume togglePanel #\"Toggle volume control panel\""
"SUPER SHIFT, R, exec, restart.noctalia #\"Restart Noctalia shell\""
"SUPER SHIFT, Return, exec, noctalia-shell ipc call launcher toggle #\"Toggle application launcher\""
"SUPER SHIFT, S, exec, screenshootin #\"Take screenshot\""
"SUPER SHIFT, T, exec, tutanota-desktop #\"Tutanota encrypted email client\""
"SUPER SHIFT, V, exec, noctalia-shell ipc call launcher clipboard #\"Open clipboard manager\""
];
altBinds = [
"SUPER ALT, C, exec, noctalia-shell ipc call controlCenter toggle #\"Toggle control center\""
"SUPER ALT, G, exec, dex ${desktopEntriesPath}/glance.desktop #\"Glance server panel\""
"SUPER ALT, M, exec, dex ${desktopEntriesPath}/mastodon.desktop #\"Mastodon social network client\""
"SUPER ALT, P, exec, noctalia-shell ipc call settings toggle #\"Open settings panel\""
"SUPER ALT, S, exec, slack #\"Slack team communication tool\""
"SUPER ALT, T, exec, gedit #\"GNOME text editor\""
"SUPER ALT, W, exec, noctalia-shell ipc call wallpaper toggle #\"Toggle wallpaper\""
];
controlBinds = [
"SUPER CONTROL, C, exec, noctalia-shell ipc call powerProfile cycle #\"Cycle through power profiles\""
"SUPER CONTROL, G, exec, gimp #\"GNU Image Manipulation Program\""
"SUPER CONTROL, M, exec, mattermost-desktop #\"Mattermost team chat client\""
"SUPER CONTROL, S, exec, signal-desktop #\"Signal encrypted messaging\""
"SUPER CONTROL, P, exec, hyprpicker -a #\"Pick color from screen\""
];
windowManagementBinds = [
"SUPER, F, fullscreen, #\"Toggle fullscreen mode\""
"SUPER, Q, killactive, #\"Close active window\""
"SUPER SHIFT, I, togglesplit, #\"Toggle split layout\""
"SUPER SHIFT, F, togglefloating, #\"Toggle floating mode\""
];
windowFocusBinds = [
"SUPER, down, movefocus, d #\"Move focus down\""
"SUPER, left, movefocus, l #\"Move focus left\""
"SUPER, right, movefocus, r #\"Move focus right\""
"SUPER, up, movefocus, u #\"Move focus up\""
];
windowMovementBinds = [
"SUPER SHIFT, down, movewindow, d #\"Move window down\""
"SUPER SHIFT, left, movewindow, l #\"Move window left\""
"SUPER SHIFT, right, movewindow, r #\"Move window right\""
"SUPER SHIFT, up, movewindow, u #\"Move window up\""
];
windowSwapBinds = [
"SUPER ALT, down, swapwindow, d #\"Swap active window with window below\""
"SUPER ALT, left, swapwindow, l #\"Swap active window with window on the left\""
"SUPER ALT, right, swapwindow, r #\"Swap active window with window on the right\""
"SUPER ALT, up, swapwindow, u #\"Swap active window with window above\""
];
workspacesSwitchBinds = [
"SUPER, 0, workspace, 10 #\"Switch to workspace 10\""
"SUPER, 1, workspace, 1 #\"Switch to workspace 1\""
"SUPER, 2, workspace, 2 #\"Switch to workspace 2\""
"SUPER, 3, workspace, 3 #\"Switch to workspace 3\""
"SUPER, 4, workspace, 4 #\"Switch to workspace 4\""
"SUPER, 5, workspace, 5 #\"Switch to workspace 5\""
"SUPER, 6, workspace, 6 #\"Switch to workspace 6\""
"SUPER, 7, workspace, 7 #\"Switch to workspace 7\""
"SUPER, 8, workspace, 8 #\"Switch to workspace 8\""
"SUPER, 9, workspace, 9 #\"Switch to workspace 9\""
"SUPER CONTROL, left, workspace, e-1 #\"Switch to previous workspace\""
"SUPER CONTROL, right, workspace, e+1 #\"Switch to next workspace\""
"SUPER, mouse_down, workspace, e+1 #\"Switch to next workspace with mouse\""
"SUPER, mouse_up, workspace, e-1 #\"Switch to previous workspace with mouse\""
];
workspacesSwapBinds = [
"SUPER SHIFT, 0, movetoworkspace, 10 #\"Move active window to workspace 10\""
"SUPER SHIFT, 1, movetoworkspace, 1 #\"Move active window to workspace 1\""
"SUPER SHIFT, 2, movetoworkspace, 2 #\"Move active window to workspace 2\""
"SUPER SHIFT, 3, movetoworkspace, 3 #\"Move active window to workspace 3\""
"SUPER SHIFT, 4, movetoworkspace, 4 #\"Move active window to workspace 4\""
"SUPER SHIFT, 5, movetoworkspace, 5 #\"Move active window to workspace 5\""
"SUPER SHIFT, 6, movetoworkspace, 6 #\"Move active window to workspace 6\""
"SUPER SHIFT, 7, movetoworkspace, 7 #\"Move active window to workspace 7\""
"SUPER SHIFT, 8, movetoworkspace, 8 #\"Move active window to workspace 8\""
"SUPER SHIFT, 9, movetoworkspace, 9 #\"Move active window to workspace 9\""
];
systemMediaAndControllsBinds = [
",XF86AudioLowerVolume, exec, noctalia-shell ipc call volume decrease #\"Lower system volume\""
",XF86AudioMute, exec, noctalia-shell ipc call volume muteOutput #\"Mute audio output\""
",XF86AudioNext, exec, noctalia-shell ipc call media next #\"Next media track\""
",XF86AudioPause, exec, noctalia-shell ipc call media pause #\"Pause media playback\""
",XF86AudioPlay, exec, noctalia-shell ipc call media play #\"Play media\""
",XF86AudioPrev, exec, noctalia-shell ipc call media previous #\"Previous media track\""
",XF86AudioRaiseVolume, exec, noctalia-shell ipc call volume increase #\"Raise system volume\""
",XF86MonBrightnessDown, exec, noctalia-shell ipc call brightness decrease #\"Decrease screen brightness\""
",XF86MonBrightnessUp, exec, noctalia-shell ipc call brightness increase #\"Increase screen brightness\""
];
mkBlock = header: lines:
lib.concatLines (
["# ${header}"]
++ (map (l: "bind = ${l}") lines)
);
fullConfig = lib.concatLines [
""
(mkBlock "1. MAIN APPS" mainBinds)
(mkBlock "2. SHIFT APPS" shiftBinds)
(mkBlock "3. ALT APPS" altBinds)
(mkBlock "4. CONTROL APPS" controlBinds)
(mkBlock "5. WINDOW MANAGEMENT" windowManagementBinds)
(mkBlock "6. WINDOWS FOCUS" windowFocusBinds)
(mkBlock "7. WINDOWS MOVEMENT" windowMovementBinds)
(mkBlock "8. WINDOWS SWAP" windowSwapBinds)
(mkBlock "9. WORKSPACES SWITCH" workspacesSwitchBinds)
(mkBlock "10. WORKSPACES SWAP" workspacesSwapBinds)
(mkBlock "11. SYSTEM MEDIA & CONTROLS" systemMediaAndControllsBinds)
];
in {
wayland.windowManager.hyprland.settings = {
extraConfig = fullConfig;
bindm = [ bindm = [
"$modifier, mouse:272, movewindow" "SUPER, mouse:272, movewindow"
"$modifier, mouse:273, resizewindow" "SUPER, mouse:273, resizewindow"
]; ];
}; };
} }

View File

@@ -1,14 +1,11 @@
{host, ...}: let _: {
inherit (import ../../../hosts/${host}/variables.nix) animChoice;
in {
imports = [ imports = [
animChoice ./animations.nix
./binds.nix ./binds.nix
./env.nix ./env.nix
./exec-once.nix ./exec-once.nix
./hypridle.nix ./hypridle.nix
./hyprland.nix ./hyprland.nix
./hyprlock.nix
./pyprland.nix ./pyprland.nix
./windowrules.nix ./windowrules.nix
]; ];

View File

@@ -1,7 +1,5 @@
_: { _: {
wayland.windowManager.hyprland = { wayland.windowManager.hyprland.settings.env = [
settings = {
env = [
"NIXOS_OZONE_WL, 1" "NIXOS_OZONE_WL, 1"
"NIXPKGS_ALLOW_UNFREE, 1" "NIXPKGS_ALLOW_UNFREE, 1"
"XDG_CURRENT_DESKTOP, Hyprland" "XDG_CURRENT_DESKTOP, Hyprland"
@@ -24,13 +22,7 @@ _: {
"GDK_SCALE,1" "GDK_SCALE,1"
"QT_SCALE_FACTOR,1" "QT_SCALE_FACTOR,1"
"EDITOR,nano" "EDITOR,nano"
# Set terminal and xdg_terminal_emulator to kitty
# To provent yazi from starting xterm when run from rofi menu
# You can set to your preferred terminal if you you like
# ToDo: Pull default terminal from config
"TERMINAL,kitty" "TERMINAL,kitty"
"XDG_TERMINAL_EMULATOR,kitty" "XDG_TERMINAL_EMULATOR,kitty"
]; ];
};
};
} }

View File

@@ -1,24 +1,9 @@
{host, ...}: let _: {
inherit wayland.windowManager.hyprland.settings.exec-once = [
(import ../../../hosts/${host}/variables.nix)
stylixImage
;
in {
wayland.windowManager.hyprland.settings = {
exec-once = [
"wl-paste --type text --watch cliphist store" # Saves text "wl-paste --type text --watch cliphist store" # Saves text
"wl-paste --type image --watch cliphist store" # Saves images "wl-paste --type image --watch cliphist store" # Saves images
"dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user start hyprpolkitagent" "systemctl --user start hyprpolkitagent"
"killall -q swww;sleep .5 && swww-daemon"
"killall -q waybar;sleep .5 && waybar"
"killall -q swaync;sleep .5 && swaync"
"#wallsetter &"
"pypr &"
"nm-applet --indicator"
"sleep 1.0 && swww img ${stylixImage}"
]; ];
};
} }

View File

@@ -1,18 +1,12 @@
_: { _: {
services = { services.hypridle = {
hypridle = {
enable = true; enable = true;
settings = { settings = {
general = { general = {
after_sleep_cmd = "hyprctl dispatch dpms on"; after_sleep_cmd = "hyprctl dispatch dpms on";
ignore_dbus_inhibit = false; ignore_dbus_inhibit = false;
lock_cmd = "hyprlock";
}; };
listener = [ listener = [
{
timeout = 900;
on-timeout = "hyprlock";
}
{ {
timeout = 1200; timeout = 1200;
on-timeout = "hyprctl dispatch dpms off"; on-timeout = "hyprctl dispatch dpms off";
@@ -21,5 +15,4 @@ _: {
]; ];
}; };
}; };
};
} }

View File

@@ -26,9 +26,7 @@ in {
enableXdgAutostart = true; enableXdgAutostart = true;
variables = ["--all"]; variables = ["--all"];
}; };
xwayland = { xwayland.enable = true;
enable = true;
};
settings = { settings = {
input = { input = {
kb_layout = "${keyboardLayout}"; kb_layout = "${keyboardLayout}";
@@ -60,7 +58,6 @@ in {
}; };
general = { general = {
"$modifier" = "SUPER";
layout = "dwindle"; layout = "dwindle";
gaps_in = 6; gaps_in = 6;
gaps_out = 8; gaps_out = 8;
@@ -97,10 +94,12 @@ in {
decoration = { decoration = {
rounding = 10; rounding = 10;
rounding_power = 2;
blur = { blur = {
enabled = true; enabled = true;
size = 5; size = 5;
passes = 3; passes = 3;
vibrancy = 0.1696;
ignore_opacity = false; ignore_opacity = false;
new_optimizations = true; new_optimizations = true;
}; };
@@ -132,9 +131,7 @@ in {
direct_scanout = 0; direct_scanout = 0;
}; };
debug = { debug.full_cm_proto = true;
full_cm_proto = true;
};
master = { master = {
new_status = "master"; new_status = "master";
@@ -143,18 +140,14 @@ in {
}; };
# Ensure Xwayland windows render at integer scale; compositor scales them # Ensure Xwayland windows render at integer scale; compositor scales them
xwayland = { xwayland.force_zero_scaling = true;
force_zero_scaling = true;
};
}; };
extraConfig = " extraConfig = "
monitor=,preferred,auto,auto monitor=,preferred,auto,auto
monitor=Virtual-1,1920x1080@60,auto,1 monitor=Virtual-1,1920x1080@60,auto,1
${extraMonitorSettings} ${extraMonitorSettings}
# To enable blur on waybar uncomment the line below layerrule = blur on, blur_popups on, ignore_alpha 0.5, match:namespace noctalia-background-\.*$
# Thanks to SchotjeChrisman
#layerrule = blur,waybar
"; ";
}; };
} }

View File

@@ -1,47 +0,0 @@
{username, ...}: {
programs.hyprlock = {
enable = true;
settings = {
general = {
disable_loading_bar = true;
grace = 10;
hide_cursor = true;
no_fade_in = false;
};
background = [
{
path = "/home/${username}/Pictures/Wallpapers/four-elements.jpg";
blur_passes = 3;
blur_size = 8;
}
];
image = [
{
path = "/home/${username}/.config/face.jpg";
size = 150;
border_size = 4;
border_color = "rgb(0C96F9)";
rounding = -1; # Negative means circle
position = "0, 200";
halign = "center";
valign = "center";
}
];
input-field = [
{
size = "200, 50";
position = "0, -80";
monitor = "";
dots_center = true;
fade_on_empty = false;
font_color = "rgb(CFE6F4)";
inner_color = "rgb(657DC2)";
outer_color = "rgb(0D0E15)";
outline_thickness = 5;
placeholder_text = "Password...";
shadow_passes = 2;
}
];
};
};
}

View File

@@ -1,101 +1,96 @@
_: { _: {
wayland.windowManager.hyprland = { wayland.windowManager.hyprland.settings.windowrule = [
settings = {
windowrule = [
# XWayland specific rules # XWayland specific rules
#"noblur, xwayland:1" # Helps prevent odd borders/shadows for xwayland apps #"noblur, xwayland:1" # Helps prevent odd borders/shadows for xwayland apps
# downside it can impact other xwayland apps # downside it can impact other xwayland apps
# This rule is a template for a more targeted approach # This rule is a template for a more targeted approach
"noblur, class:^(\bresolve\b)$, xwayland:1" # Window rule for just resolve "no_blur on, match:class resolve, match:xwayland 1" # Window rule for just resolve
# Application tags # Application tags
"tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$" "tag +file-manager, match:class [Tt]hunar|org\.gnome\.Nautilus|[Pp]cmanfm-qt"
"tag +terminal, class:^(com.mitchellh.ghostty|org.wezfurlong.wezterm|Alacritty|kitty|kitty-dropterm)$" "tag +terminal, match:class com\.mitchellh\.ghostty|org\.wezfurlong\.wezterm|Alacritty|kitty|kitty-dropterm"
"tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$" "tag +browser, match:class [Ff]irefox|org\.mozilla\.firefox|[Ff]irefox-esr"
"tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr)$" "tag +browser, match:class [Ll]ibrewolf|io\.gitlab\.librewolf-community"
"tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$" "tag +browser, match:class [Gg]oogle-chrome(-beta|-dev|-unstable)?|[Cc]hromium-browser(-beta|-dev|-unstable)?"
"tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$" "tag +projects, match:class VSCode|code|code-url-handler|codium|codium-url-handler|VSCodium|VSCodium-url-handler"
"tag +projects, class:^(codium|codium-url-handler|VSCodium)$" "tag +projects, match:class dev\.zed\.Zed"
"tag +projects, class:^(VSCode|code-url-handler)$" "tag +im, match:class [Dd]iscord|[Ww]ebCord|[Vv]esktop"
"tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$" "tag +im, match:class [Ff]erdium"
"tag +im, class:^([Ff]erdium)$" "tag +im, match:class [Ss]ignal"
"tag +im, class:^([Ww]hatsapp-for-linux)$" "tag +im, match:class [Ss]lack"
"tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$" "tag +im, match:class [Tt]eams-for-linux"
"tag +im, class:^(teams-for-linux)$" "tag +games, match:class gamescope"
"tag +games, class:^(gamescope)$" "tag +games, match:class ?:steam_app_\d+"
"tag +games, class:^(steam_app_\d+)$" "tag +games, match:class tf_linux64"
"tag +gamestore, class:^([Ss]team)$" "tag +games, match:class Minecraft\*.*"
"tag +gamestore, title:^([Ll]utris)$" "tag +gamestore, match:class [Ss]team"
"tag +gamestore, class:^(com.heroicgameslauncher.hgl)$" "tag +gamestore, match:title [Ll]utris"
"tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$" "tag +gamestore, match:class com\.heroicgameslauncher\.hgl"
"tag +settings, class:^([Rr]ofi)$" "tag +gamestore, match:class org\.prismlauncher\.PrismLauncher"
"tag +settings, class:^(file-roller|org.gnome.FileRoller)$" "tag +settings, match:class gnome-disks|wihotspot(-gui)?"
"tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$" "tag +settings, match:class [Rr]ofi"
"tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$" "tag +settings, match:class file-roller|org\.gnome\.FileRoller"
"tag +settings, class:^(nwg-look|qt5ct|qt6ct|[Yy]ad)$" "tag +settings, match:class nm-applet|nm-connection-editor"
"tag +settings, class:(xdg-desktop-portal-gtk)" "tag +settings, match:class pavucontrol|org\.pulseaudio\.pavucontrol|com\.saivert\.pwvucontrol"
"tag +settings, class:(.blueman-manager-wrapped)" "tag +settings, match:class nwg-look|qt5ct|qt6ct|[Yy]ad"
"tag +settings, class:(nwg-displays)" "tag +settings, match:class xdg-desktop-portal-gtk"
"tag +settings, match:class nwg-displays"
# Position and movement rules # Position and movement rules
"move 72% 7%,title:^(Picture-in-Picture)$" "move 72% 7%, match:title Picture-in-Picture"
"center, class:^([Ff]erdium)$" "center on, match:class pavucontrol|org\.pulseaudio\.pavucontrol|com\.saivert\.pwvucontrol"
"center, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$" "center on, match:class [Tt]hunar, match:title negative:.*[Tt]hunar.*"
"center, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)" "center on, match:title Authentication Required"
"center, title:^(Authentication Required)$"
# Idle inhibit rules # Idle inhibit rules
"idleinhibit fullscreen, class:^(*)$" "idle_inhibit fullscreen, match:class .*"
"idleinhibit fullscreen, title:^(*)$" "idle_inhibit fullscreen, match:title .*"
"idleinhibit fullscreen, fullscreen:1" "idle_inhibit fullscreen, match:fullscreen 1"
# Float rules # Float rules
"float, class:^([Ww]aypaper)$" "float on, match:class [Ww]aypaper"
"float, tag:settings*" "float on, match:tag settings*"
"float, class:^([Ff]erdium)$" "float on, match:title Picture-in-Picture"
"float, title:^(Picture-in-Picture)$" "float on, match:title Authentication Required"
"float, class:^(mpv)$" "float on, match:title War in Tunnels"
"float, title:^(Authentication Required)$" "float on, match:class codium|codium-url-handler|VSCodium, match:title negative:.*(?:codium|VSCodium).*"
"float, title:^(War in Tunnels)$" "float on, match:class com\.heroicgameslauncher\.hgl, match:title negative Heroic Games Launcher"
"float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*)" "float on, match:class [Ss]team, match:title negative:[Ss]team"
"float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher)" "float on, match:class [Tt]hunar, match:title negative:.*[Tt]hunar.*"
"float, class:^([Ss]team)$, title:negative:^([Ss]team)$" "float on, match:class galculator"
"float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)" "float on, match:initial_title Add Folder to Workspace"
"float, class:^(galculator)$" "float on, match:initial_title Open Files"
"float, initialTitle:(Add Folder to Workspace)" "float on, match:initial_title wants to save"
"float, initialTitle:(Open Files)"
"float, initialTitle:(wants to save)"
# Size rules # Size rules
"size 70% 60%, initialTitle:(Open Files)" "size 70% 60%, match:initial_title Open Files"
"size 70% 60%, initialTitle:(Add Folder to Workspace)" "size 70% 60%, match:initial_title Add Folder to Workspace"
"size 70% 70%, tag:settings*" "size 70% 70%, match:tag settings*"
"size 60% 70%, class:^([Ff]erdium)$"
"size 70% 70%, class:^(mpv)$"
# Tile rules # Tile rules
"tile, class:^(affinity.exe)$" "tile on, match:class affinity\.exe"
"tile, class:^(dev.zed.Zed)$" "tile on, match:class dev\.zed\.Zed"
"tile on, match:class mpv"
"tile on, match:class com-cburch-logisim-Main"
# Opacity rules # Opacity rules
"opacity 1.0 1.0, tag:browser*" "opacity 1.0 1.0, match:tag browser*"
"opacity 0.9 0.8, tag:projects*" "opacity 0.9 0.8, match:tag projects*"
"opacity 0.94 0.86, tag:im*" "opacity 0.94 0.86, match:tag im*"
"opacity 0.9 0.8, tag:file-manager*" "opacity 0.85 0.75, match:tag gamestore*"
"opacity 0.8 0.7, tag:terminal*" "opacity 0.9 0.8, match:tag file-manager*"
"opacity 0.8 0.7, tag:settings*" "opacity 0.8 0.7, match:tag terminal*"
"opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$" "opacity 0.8 0.7, match:tag settings*"
"opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui" "opacity 0.8 0.7, match:class gedit|org\.gnome\.TextEditor|mousepad"
"opacity 0.95 0.75, title:^(Picture-in-Picture)$" "opacity 0.9 0.8, match:class seahorse # gnome-keyring gui"
"opacity 0.95 0.75, match:title Picture-in-Picture"
# Picture-in-Picture specific rules # Picture-in-Picture specific rules
"pin, title:^(Picture-in-Picture)$" "pin on, match:title Picture-in-Picture"
"keepaspectratio, title:^(Picture-in-Picture)$" "keep_aspect_ratio on, match:title Picture-in-Picture"
# Games specific rules # Games specific rules
"noblur, tag:games*" "no_blur on, match:tag games*"
"fullscreen, tag:games*" "fullscreen on, match:tag games*"
]; ];
};
};
} }

View File

@@ -75,13 +75,7 @@
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
urls = [ urls = [
{ {
template = "https://search.nixos.org/options"; template = "https://search.nixos.org/options?channel=unstable&query={searchTerms}";
params = [
{
name = "query";
value = "{searchTerms}";
}
];
} }
]; ];
}; };

View File

@@ -0,0 +1,33 @@
{
config,
lib,
...
}: let
stylix = config.stylix.base16Scheme;
in {
programs.noctalia-shell.colors = lib.mkForce {
mPrimary = "#${stylix.base04}";
mOnPrimary = "#${stylix.base00}";
mSecondary = "#${stylix.base05}";
mOnSecondary = "#${stylix.base00}";
mTertiary = "#${stylix.base03}";
mOnTertiary = "#${stylix.base00}";
mError = "#${stylix.base02}";
mOnError = "#${stylix.base00}";
mSurface = "#${stylix.base01}";
mOnSurface = "#${stylix.base0E}";
mSurfaceVariant = "#${stylix.base00}";
mOnSurfaceVariant = "#${stylix.base0A}";
mOutline = "#${stylix.base08}";
mShadow = "#${stylix.base00}";
mOnHover = "#${stylix.base0B}";
mHover = "#${stylix.base00}";
};
}

View File

@@ -0,0 +1,21 @@
{
lib,
inputs,
system,
...
}: {
programs.noctalia-shell = {
enable = true;
package = inputs.noctalia.packages.${system}.default.override {
calendarSupport = true;
};
systemd.enable = true;
settings.settingsVersion = lib.mkForce 46;
};
imports = [
./settings
./colors.nix
./plugins.nix
];
}

View File

@@ -0,0 +1,40 @@
{lib, ...}: {
programs.noctalia-shell = lib.mkForce {
plugins = {
sources = [
{
enabled = true;
name = "Noctalia Plugins";
url = "https://github.com/noctalia-dev/noctalia-plugins";
}
];
states = {
mini-docker = {
enabled = true;
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
};
timer = {
enabled = true;
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
};
keybind-cheatsheet = {
enabled = true;
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
};
};
version = 1;
};
pluginSettings = {
mini-docker.refreshInterval = 5000;
timer.compactMode = true;
keybind-cheatsheet = {
niriConfigPath = "~/.config/niri/config.kdl";
hyprlandConfigPath = "~/.config/hypr/hyprland.conf";
modKeyVariable = "SUPER";
windowHeight = 850;
windowWidth = 1400;
autoHeight = true;
};
};
};
}

View File

@@ -0,0 +1,25 @@
{lib, ...}: {
programs.noctalia-shell.settings.appLauncher = lib.mkForce {
enableClipboardHistory = true;
autoPasteClipboard = false;
enableClipPreview = true;
clipboardWrapText = true;
clipboardWatchTextCommand = "wl-paste --type text --watch cliphist store";
clipboardWatchImageCommand = "wl-paste --type image --watch cliphist store";
position = "center";
pinnedApps = [];
useApp2Unit = true;
sortByMostUsed = true;
terminalCommand = "kitty -e";
customLaunchPrefixEnabled = false;
customLaunchPrefix = "";
viewMode = "list";
showCategories = true;
iconMode = "native";
showIconBackground = false;
enableSettingsSearch = true;
enableWindowsSearch = true;
ignoreMouseInput = false;
screenshotAnnotationTool = "";
};
}

View File

@@ -0,0 +1,11 @@
{lib, ...}: {
programs.noctalia-shell.settings.audio = lib.mkForce {
"volumeStep" = 5;
"volumeOverdrive" = true;
"cavaFrameRate" = 144;
"visualizerType" = "linear";
"mprisBlacklist" = [];
"preferredPlayer" = "mpv";
"volumeFeedback" = false;
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
username,
...
}: {
programs.noctalia-shell.settings.bar = lib.mkForce {
barType = "simple";
position = "top";
monitors = [];
density = "default";
showOutline = false;
showCapsule = true;
capsuleOpacity = 0;
backgroundOpacity = 0;
useSeparateOpacity = true;
floating = false;
marginVertical = 4;
marginHorizontal = 4;
frameThickness = 8;
frameRadius = 12;
outerCorners = true;
hideOnOverview = false;
displayMode = "always_visible";
autoHideDelay = 500;
autoShowDelay = 150;
screenOverrides = [];
widgets = {
left = (import ./widgets/left.nix {}).left;
center = (import ./widgets/center.nix {}).center;
right = (import ./widgets/right.nix {inherit username;}).right;
};
};
}

View File

@@ -0,0 +1,23 @@
_: {
center = [
{
id = "Workspace";
characterCount = 2;
colorizeIcons = false;
emptyColor = "secondary";
enableScrollWheel = true;
focusedColor = "primary";
followFocusedScreen = false;
groupedBorderOpacity = 0;
hideUnoccupied = false;
iconScale = 1;
labelMode = "index";
occupiedColor = "secondary";
reverseScroll = false;
showApplications = true;
showBadge = true;
showLabelsOnlyWhenOccupied = true;
unfocusedIconsOpacity = 1;
}
];
}

View File

@@ -0,0 +1,57 @@
_: {
left = [
{
id = "Launcher";
icon = "rocket";
usePrimaryColor = true;
}
{
id = "Clock";
customFont = "";
formatHorizontal = "HH:mm:ss";
formatVertical = "HH mm ss - ddd MMM d";
tooltipFormat = "ddd MMM d HH:mm:ss";
useCustomFont = false;
usePrimaryColor = false;
}
{
id = "SystemMonitor";
compactMode = true;
diskPath = "/home";
showCpuFreq = false;
showCpuTemp = false;
showCpuUsage = true;
showDiskAsFree = true;
showDiskUsage = true;
showGpuTemp = false;
showLoadAverage = false;
showMemoryAsPercent = false;
showMemoryUsage = true;
showNetworkStats = true;
showSwapUsage = false;
useMonospaceFont = true;
usePrimaryColor = false;
}
{
id = "plugin:mini-docker";
}
{
id = "MediaMini";
compactMode = true;
compactShowAlbumArt = true;
compactShowVisualizer = true;
hideMode = "hidden";
hideWhenIdle = false;
maxWidth = 145;
panelShowAlbumArt = true;
panelShowVisualizer = true;
scrollingMode = "hover";
showAlbumArt = true;
showArtistFirst = true;
showProgressRing = true;
showVisualizer = true;
useFixedWidth = false;
visualizerType = "linear";
}
];
}

View File

@@ -0,0 +1,61 @@
{username, ...}: {
right = [
{
id = "Tray";
blacklist = [];
colorizeIcons = false;
drawerEnabled = false;
hidePassive = false;
pinned = [];
}
{
id = "plugin:keybind-cheatsheet";
}
{
id = "plugin:timer";
defaultSettings = {
compactMode = true;
defaultDuration = 0;
};
}
{
id = "NotificationHistory";
hideWhenZero = false;
hideWhenZeroUnread = false;
showUnreadBadge = true;
unreadBadgeColor = "primary";
}
{
id = "Bluetooth";
displayMode = "onhover";
}
{
id = "Battery";
deviceNativePath = "__default__";
displayMode = "onhover";
hideIfIdle = false;
hideIfNotDetected = true;
showNoctaliaPerformance = false;
showPowerProfiles = false;
warningThreshold = 30;
}
{
id = "Volume";
displayMode = "alwaysShow";
middleClickCommand = "pwvucontrol || pavucontrol";
}
# {
# "id" = "Brightness";
# "displayMode" = "onhover";
# }
{
id = "ControlCenter";
colorizeDistroLogo = false;
colorizeSystemIcon = "none";
customIconPath = "/home/${username}/garandos/GarandOS.svg";
enableColorization = false;
icon = "noctalia";
useDistroLogo = false;
}
];
}

View File

@@ -0,0 +1,7 @@
{lib, ...}: {
programs.noctalia-shell.settings.brightness = lib.mkForce {
brightnessStep = 5;
enforceMinimum = true;
enableDdcSupport = true;
};
}

View File

@@ -0,0 +1,16 @@
{lib, ...}: {
programs.noctalia-shell.settings.calendar.cards = lib.mkForce [
{
enabled = true;
id = "calendar-header-card";
}
{
enabled = true;
id = "calendar-month-card";
}
{
enabled = true;
id = "weather-card";
}
];
}

View File

@@ -0,0 +1,12 @@
{lib, ...}: {
programs.noctalia-shell.settings.colorSchemes = lib.mkForce {
useWallpaperColors = false;
predefinedScheme = "Noctalia (default)";
darkMode = true;
schedulingMode = "off";
manualSunrise = "06:30";
manualSunset = "18:30";
generationMethod = "tonal-spot";
monitorForColors = "";
};
}

View File

@@ -0,0 +1,62 @@
{lib, ...}: {
programs.noctalia-shell.settings.controlCenter = lib.mkForce {
position = "close_to_bar_button";
diskPath = "/home";
shortcuts = {
left = [
{
id = "Network";
}
{
id = "Bluetooth";
}
{
id = "WallpaperSelector";
}
{
id = "NoctaliaPerformance";
}
];
right = [
{
id = "Notifications";
}
{
id = "PowerProfile";
}
{
id = "KeepAwake";
}
{
id = "NightLight";
}
];
};
cards = [
{
enabled = true;
id = "profile-card";
}
{
enabled = true;
id = "shortcuts-card";
}
{
enabled = true;
id = "audio-card";
}
{
enabled = true;
id = "brightness-card";
}
{
enabled = true;
id = "weather-card";
}
{
enabled = true;
id = "media-sysmon-card";
}
];
};
}

View File

@@ -0,0 +1,25 @@
_: {
imports = [
./bar
./notifications
./app-launcher.nix
./audio.nix
./brightness.nix
./calendar.nix
./color-schemes.nix
./control-center.nix
./desktop-widgets.nix
./dock.nix
./general.nix
./hooks.nix
./location.nix
./network.nix
./night-light.nix
./osd.nix
./session-menu.nix
./system-monitor.nix
./templates.nix
./ui.nix
./wallpapers.nix
];
}

View File

@@ -0,0 +1,7 @@
{lib, ...}: {
programs.noctalia-shell.settings.desktop-widgets = lib.mkForce {
"enabled" = false;
"gridSnap" = false;
"monitorWidgets" = [];
};
}

View File

@@ -0,0 +1,18 @@
{lib, ...}: {
programs.noctalia-shell.settings.dock = lib.mkForce {
enabled = false;
position = "bottom";
displayMode = "auto_hide";
backgroundOpacity = 0;
floatingRatio = 1;
size = 1.5;
onlySameOutput = false;
monitors = [];
pinnedApps = [];
colorizeIcons = false;
pinnedStatic = false;
inactiveIndicators = false;
deadOpacity = 0.5;
animationSpeed = 1;
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
host,
username,
...
}: let
inherit (import ../../../../hosts/${host}/variables.nix) keyboardLayout;
in {
programs.noctalia-shell.settings.general = lib.mkForce {
avatarImage = "/home/${username}/.face.icon";
dimmerOpacity = 0.2;
showScreenCorners = false;
forceBlackScreenCorners = false;
scaleRatio = 1;
radiusRatio = 2;
iRadiusRatio = 2;
boxRadiusRatio = 1;
screenRadiusRatio = 1;
animationSpeed = 1;
animationDisabled = false;
compactLockScreen = false;
lockOnSuspend = true;
showSessionButtonsOnLockScreen = true;
showHibernateOnLockScreen = false;
enableShadows = true;
shadowDirection = "bottom_right";
shadowOffsetX = 2;
shadowOffsetY = 3;
language = "${keyboardLayout}";
allowPanelsOnScreenWithoutBar = true;
showChangelogOnStartup = true;
telemetryEnabled = false;
enableLockScreenCountdown = true;
lockScreenCountdownDuration = 10000;
autoStartAuth = false;
allowPasswordWithFprintd = false;
};
}

View File

@@ -0,0 +1,13 @@
{lib, ...}: {
programs.noctalia-shell.settings.hooks = lib.mkForce {
"enabled" = false;
"wallpaperChange" = "";
"darkModeChange" = "";
"screenLock" = "";
"screenUnlock" = "";
"performanceModeEnabled" = "";
"performanceModeDisabled" = "";
"startup" = "";
"session" = "";
};
}

View File

@@ -0,0 +1,22 @@
{
lib,
host,
...
}: let
inherit (import ../../../../hosts/${host}/variables.nix) location;
in {
programs.noctalia-shell.settings.location = lib.mkForce {
name = "${location}";
weatherEnabled = true;
weatherShowEffects = true;
useFahrenheit = false;
use12hourFormat = false;
showWeekNumberInCalendar = false;
showCalendarEvents = true;
showCalendarWeather = true;
analogClockInCalendar = false;
firstDayOfWeek = -1;
hideWeatherTimezone = false;
hideWeatherCityName = false;
};
}

View File

@@ -0,0 +1,10 @@
{lib, ...}: {
programs.noctalia-shell.settings.network = lib.mkForce {
wifiEnabled = true;
bluetoothRssiPollingEnabled = true;
bluetoothRssiPollIntervalMs = 10000;
wifiDetailsViewMode = "grid";
bluetoothDetailsViewMode = "grid";
bluetoothHideUnnamedDevices = false;
};
}

View File

@@ -0,0 +1,11 @@
{lib, ...}: {
programs.noctalia-shell.settings.nightLight = lib.mkForce {
"enabled" = false;
"forced" = false;
"autoSchedule" = true;
"nightTemp" = "4177";
"dayTemp" = "6500";
"manualSunrise" = "06:30";
"manualSunset" = "18:30";
};
}

View File

@@ -0,0 +1,33 @@
{
lib,
username,
...
}: {
programs.noctalia-shell.settings.notifications = lib.mkForce {
enabled = true;
monitors = [];
location = "top_right";
overlayLayer = true;
backgroundOpacity = 0;
respectExpireTimeout = false;
lowUrgencyDuration = 3;
normalUrgencyDuration = 8;
criticalUrgencyDuration = 15;
enableKeyboardLayoutToast = false;
saveToHistory = {
low = true;
normal = true;
critical = true;
};
sounds = {
enabled = true;
volume = 0.5;
separateSounds = false;
criticalSoundFile = "/home/${username}/garandos/modules/home/noctalia/settings/notifications/payday-2-new-objective-sound-effect.mp3";
normalSoundFile = "/home/${username}/garandos/modules/home/noctalia/settings/notifications/payday-2-new-objective-sound-effect.mp3";
lowSoundFile = "/home/${username}/garandos/modules/home/noctalia/settings/notifications/payday-2-new-objective-sound-effect.mp3";
excludedApps = "discord,firefox,chrome,chromium,edge";
};
enableMediaToast = false;
};
}

View File

@@ -0,0 +1,15 @@
{lib, ...}: {
programs.noctalia-shell.settings.osd = lib.mkForce {
"enabled" = true;
"location" = "right";
"autoHideMs" = 2000;
"overlayLayer" = true;
"backgroundOpacity" = 0;
"enabledTypes" = [
0
1
2
];
"monitors" = [];
};
}

View File

@@ -0,0 +1,49 @@
{lib, ...}: {
programs.noctalia-shell.settings.sessionMenu = lib.mkForce {
enableCountdown = false;
countdownDuration = 10000;
position = "center";
showHeader = true;
largeButtonsStyle = true;
largeButtonsLayout = "grid";
showNumberLabels = true;
powerOptions = [
{
action = "lock";
command = "";
countdownEnabled = true;
enabled = true;
}
{
action = "suspend";
command = "";
countdownEnabled = true;
enabled = true;
}
{
action = "hibernate";
command = "";
countdownEnabled = true;
enabled = true;
}
{
action = "reboot";
command = "";
countdownEnabled = true;
enabled = true;
}
{
action = "logout";
command = "";
countdownEnabled = true;
enabled = true;
}
{
action = "shutdown";
command = "";
countdownEnabled = true;
enabled = true;
}
];
};
}

View File

@@ -0,0 +1,34 @@
{
lib,
config,
...
}: let
stylix = config.stylix.base16Scheme;
in {
programs.noctalia-shell.settings.systemMonitor = lib.mkForce {
cpuWarningThreshold = 80;
cpuCriticalThreshold = 90;
tempWarningThreshold = 80;
tempCriticalThreshold = 90;
gpuWarningThreshold = 80;
gpuCriticalThreshold = 90;
memWarningThreshold = 80;
memCriticalThreshold = 90;
swapWarningThreshold = 80;
swapCriticalThreshold = 90;
diskWarningThreshold = 80;
diskCriticalThreshold = 90;
cpuPollingInterval = 3000;
tempPollingInterval = 3000;
gpuPollingInterval = 3000;
enableDgpuMonitoring = false;
memPollingInterval = 3000;
diskPollingInterval = 30000;
networkPollingInterval = 3000;
loadAvgPollingInterval = 3000;
useCustomColors = true;
warningColor = "#${stylix.base03}";
criticalColor = "#${stylix.base02}";
externalMonitor = "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor";
};
}

View File

@@ -0,0 +1,6 @@
{lib, ...}: {
programs.noctalia-shell.settings.templates = lib.mkForce {
activeTemplates = [];
enableUserTheming = false;
};
}

View File

@@ -0,0 +1,17 @@
{lib, ...}: {
programs.noctalia-shell.settings.ui = lib.mkForce {
fontDefault = "Fira Code";
fontFixed = "Fira Mono for Powerline";
fontDefaultScale = 1;
fontFixedScale = 1;
tooltipsEnabled = true;
panelBackgroundOpacity = 0.76;
panelsAttachedToBar = true;
settingsPanelMode = "attached";
wifiDetailsViewMode = "grid";
bluetoothDetailsViewMode = "grid";
networkPanelView = "wifi";
bluetoothHideUnnamedDevices = false;
boxBorderEnabled = false;
};
}

View File

@@ -0,0 +1,47 @@
{
lib,
host,
username,
...
}: let
inherit (import ../../../../hosts/${host}/variables.nix) stylixImage;
in {
programs.noctalia-shell.settings.wallpaper = lib.mkForce {
enabled = true;
overviewEnabled = false;
directory = "/home/${username}/Pictures/Wallpapers";
monitorDirectories = [];
enableMultiMonitorDirectories = false;
showHiddenFiles = false;
viewMode = "single";
setWallpaperOnAllMonitors = true;
fillMode = "crop";
fillColor = "#000000";
useSolidColor = false;
solidColor = "#1a1a2e";
automationEnabled = false;
wallpaperChangeMode = "random";
randomIntervalSec = 300;
transitionDuration = 1500;
transitionType = "random";
transitionEdgeSmoothness = 0.05;
panelPosition = "follow_bar";
hideWallpaperFilenames = false;
useWallhaven = false;
wallhavenQuery = "";
wallhavenSorting = "relevance";
wallhavenOrder = "desc";
wallhavenCategories = "111";
wallhavenPurity = "100";
wallhavenRatios = "";
wallhavenApiKey = "";
wallhavenResolutionMode = "atleast";
wallhavenResolutionWidth = "";
wallhavenResolutionHeight = "";
sortOrder = "name";
};
home.file.".cache/noctalia/wallpapers.json".text = lib.mkForce (builtins.toJSON {
defaultWallpaper = ../../../../wallpapers/${stylixImage};
});
}

View File

@@ -1,55 +0,0 @@
_: {
home.file.".config/rofi/config-long.rasi".text = ''
@import "~/.config/rofi/config.rasi"
* {
font: "JetBrainsMono Nerd Font Mono 12";
}
window {
width: 750px;
border-radius: 10px;
}
mainbox {
orientation: vertical;
children: [ "inputbar", "listbox" ];
}
listview {
lines: 13;
}
inputbar {
padding: 55px 30px;
background-color: transparent;
background-image: url("~/Pictures/Wallpapers/attack-on-titan-mikasa-ackerman.jpg", width);
text-color: @foreground;
children: [ "textbox-prompt-colon", "entry" ];
}
textbox-prompt-colon {
padding: 12px 20px;
border-radius: 100%;
background-color: @bg-alt;
text-color: @foreground;
}
entry {
expand: true;
padding: 12px 16px;
border-radius: 100%;
background-color: @bg-alt;
text-color: @foreground;
}
button {
padding: 2px;
border-radius: 100%;
}
element {
spacing: 2px;
padding: 2px;
border-radius: 100%;
}
textbox {
padding: 12px;
border-radius: 100%;
}
error-message {
border-radius: 0px;
}
'';
}

View File

@@ -1,6 +0,0 @@
_: {
imports = [
./config-long.nix
./rofi.nix
];
}

View File

@@ -1,207 +0,0 @@
{
pkgs,
config,
...
}: {
programs = {
rofi = {
enable = true;
package = pkgs.rofi;
extraConfig = {
modi = "drun,filebrowser,run";
show-icons = true;
icon-theme = "Papirus";
font = "JetBrainsMono Nerd Font Mono 12";
drun-display-format = "{icon} {name}";
display-drun = " Apps";
display-run = " Run";
display-filebrowser = " File";
};
theme = let
inherit (config.lib.formats.rasi) mkLiteral;
in {
"*" = {
bg = mkLiteral "#${config.stylix.base16Scheme.base00}";
bg-alt = mkLiteral "#${config.stylix.base16Scheme.base09}";
foreground = mkLiteral "#${config.stylix.base16Scheme.base01}";
selected = mkLiteral "#${config.stylix.base16Scheme.base08}";
active = mkLiteral "#${config.stylix.base16Scheme.base0B}";
text-selected = mkLiteral "#${config.stylix.base16Scheme.base00}";
text-color = mkLiteral "#${config.stylix.base16Scheme.base05}";
border-color = mkLiteral "#${config.stylix.base16Scheme.base0F}";
urgent = mkLiteral "#${config.stylix.base16Scheme.base0E}";
};
"window" = {
transparency = "real";
width = mkLiteral "1000px";
location = mkLiteral "center";
anchor = mkLiteral "center";
fullscreen = false;
x-offset = mkLiteral "0px";
y-offset = mkLiteral "0px";
cursor = "default";
enabled = true;
border-radius = mkLiteral "15px";
background-color = mkLiteral "@bg";
};
"mainbox" = {
enabled = true;
spacing = mkLiteral "0px";
orientation = mkLiteral "horizontal";
children = map mkLiteral [
"imagebox"
"listbox"
];
background-color = mkLiteral "transparent";
};
"imagebox" = {
padding = mkLiteral "20px";
background-color = mkLiteral "transparent";
background-image = mkLiteral ''url("~/Pictures/Wallpapers/fire-nation.jpg", height)'';
orientation = mkLiteral "vertical";
children = map mkLiteral [
"inputbar"
"dummy"
"mode-switcher"
];
};
"listbox" = {
spacing = mkLiteral "20px";
padding = mkLiteral "20px";
background-color = mkLiteral "transparent";
orientation = mkLiteral "vertical";
children = map mkLiteral [
"message"
"listview"
];
};
"dummy" = {
background-color = mkLiteral "transparent";
};
"inputbar" = {
enabled = true;
spacing = mkLiteral "10px";
padding = mkLiteral "10px";
border-radius = mkLiteral "10px";
background-color = mkLiteral "@bg-alt";
text-color = mkLiteral "@foreground";
children = map mkLiteral [
"textbox-prompt-colon"
"entry"
];
};
"textbox-prompt-colon" = {
enabled = true;
expand = false;
str = "";
background-color = mkLiteral "inherit";
text-color = mkLiteral "inherit";
};
"entry" = {
enabled = true;
background-color = mkLiteral "inherit";
text-color = mkLiteral "inherit";
cursor = mkLiteral "text";
placeholder = "Search";
placeholder-color = mkLiteral "inherit";
};
"mode-switcher" = {
enabled = true;
spacing = mkLiteral "20px";
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
};
"button" = {
padding = mkLiteral "15px";
border-radius = mkLiteral "10px";
background-color = mkLiteral "@bg-alt";
text-color = mkLiteral "inherit";
cursor = mkLiteral "pointer";
};
"button selected" = {
background-color = mkLiteral "@selected";
text-color = mkLiteral "@foreground";
};
"listview" = {
enabled = true;
columns = 1;
lines = 8;
cycle = true;
dynamic = true;
scrollbar = false;
layout = mkLiteral "vertical";
reverse = false;
fixed-height = true;
fixed-columns = true;
spacing = mkLiteral "10px";
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
cursor = "default";
};
"element" = {
enabled = true;
spacing = mkLiteral "15px";
padding = mkLiteral "8px";
border-radius = mkLiteral "10px";
background-color = mkLiteral "transparent";
text-color = mkLiteral "@text-color";
cursor = mkLiteral "pointer";
};
"element normal.normal" = {
background-color = mkLiteral "inherit";
text-color = mkLiteral "@text-color";
};
"element normal.urgent" = {
background-color = mkLiteral "@urgent";
text-color = mkLiteral "@text-color";
};
"element normal.active" = {
background-color = mkLiteral "inherit";
text-color = mkLiteral "@text-color";
};
"element selected.normal" = {
background-color = mkLiteral "@selected";
text-color = mkLiteral "@foreground";
};
"element selected.urgent" = {
background-color = mkLiteral "@urgent";
text-color = mkLiteral "@text-selected";
};
"element selected.active" = {
background-color = mkLiteral "@urgent";
text-color = mkLiteral "@text-selected";
};
"element-icon" = {
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
size = mkLiteral "36px";
cursor = mkLiteral "inherit";
};
"element-text" = {
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
cursor = mkLiteral "inherit";
vertical-align = mkLiteral "0.5";
horizontal-align = mkLiteral "0.0";
};
"message" = {
background-color = mkLiteral "transparent";
};
"textbox" = {
padding = mkLiteral "15px";
border-radius = mkLiteral "10px";
background-color = mkLiteral "@bg-alt";
text-color = mkLiteral "@foreground";
vertical-align = mkLiteral "0.5";
horizontal-align = mkLiteral "0.0";
};
"error-message" = {
padding = mkLiteral "15px";
border-radius = mkLiteral "20px";
background-color = mkLiteral "@bg";
text-color = mkLiteral "@foreground";
};
};
};
};
}

View File

@@ -1,34 +1,7 @@
{ {pkgs, ...}: {
pkgs, home.packages = [
username,
...
}: {
home.packages = with pkgs; [
# hyprland
swww
grim
slurp
wl-clipboard
swappy
ydotool
hyprpolkitagent
hyprland-qtutils # needed for banners and ANR messages
# pyprland
pyprland
(import ./emopicker9000.nix {inherit pkgs;})
(import ./hm-find.nix {inherit pkgs;})
(import ./keybinds.nix {inherit pkgs username;})
(import ./note.nix {inherit pkgs;})
(import ./note-from-clipboard.nix {inherit pkgs;})
(import ./nvidia-offload.nix {inherit pkgs;}) (import ./nvidia-offload.nix {inherit pkgs;})
(import ./rofi-launcher.nix {inherit pkgs;}) (import ./restart.noctalia.nix {inherit pkgs;})
(import ./screenshootin.nix {inherit pkgs;}) (import ./screenshootin.nix {inherit pkgs;})
(import ./task-waybar.nix {inherit pkgs;})
(import ./wallsetter.nix {
inherit pkgs;
inherit username;
})
(import ./web-search.nix {inherit pkgs;})
]; ];
} }

View File

@@ -1,22 +0,0 @@
{pkgs}:
pkgs.writeShellScriptBin "emopicker9000" ''
# check if rofi is already running
if pidof rofi > /dev/null; then
pkill rofi
fi
# Get user selection via wofi from emoji file.
chosen=$(cat $HOME/.config/.emoji | ${pkgs.rofi}/bin/rofi -i -dmenu -config ~/.config/rofi/config-long.rasi | awk '{print $1}')
# Exit if none chosen.
[ -z "$chosen" ] && exit
# If you run this command with an argument, it will automatically insert the
# character. Otherwise, show a message that the emoji has been copied.
if [ -n "$1" ]; then
${pkgs.ydotool}/bin/ydotool type "$chosen"
else
printf "$chosen" | ${pkgs.wl-clipboard}/bin/wl-copy
${pkgs.libnotify}/bin/notify-send "'$chosen' copied to clipboard." &
fi
''

View File

@@ -1,60 +0,0 @@
{pkgs}:
pkgs.writeShellScriptBin "hm-find" ''
#!/usr/bin/env bash
# Script Metadata
#===============================================
# This script searches recent journalctl entries for Home Manager errors
# It identifies backup files that prevent rebuilds and allows removal.
# Author: Don Williams
# Creation Date: May 6th, 2025
# Revision History:
#-----------------------------------------------
# 0.1 - 5/6/25 - Initial version
# 0.2 - 5/7/25 - Improved messaging, added log directory check
# Display WARNING message
echo "==============================================="
echo " WARNING "
echo "==============================================="
echo "*** This script is experimental! ***"
echo "It will attempt to find old backup files that are preventing Home Manager from rebuilding."
echo "If conflicting files are found, you will be prompted to remove them."
echo "A log of any deletions will be stored in \$HOME/hm-logs."
echo "==============================================="
# Define the time range (default: last 30 minutes)
TIME_RANGE="30m"
LOG_DIR="$HOME/hm-logs"
LOG_FILE="$LOG_DIR/hm-cleanup-$(date +'%Y-%m-%d_%H-%M-%S').log"
# Ensure the log directory exists
if [ ! -d "$LOG_DIR" ]; then
echo "Creating log directory: $LOG_DIR"
mkdir -p "$LOG_DIR"
fi
# Search journal logs for backup conflicts and extract file paths
FILES=$(journalctl --since "-$TIME_RANGE" -xe | grep hm-activate | awk -F "'|'" '/would be clobbered by backing up/ {print $2}')
# Check if any files were found
if [ -z "$FILES" ]; then
echo "No conflicting backup files found in the last $TIME_RANGE."
exit 0
fi
# Display found backup files
echo "🚨 The following backup files are preventing Home Manager from rebuilding:"
echo "$FILES" | tr ' ' '\n'
# Ask for user confirmation before deletion
read -p " Do you want to remove these files? (y/N): " confirm
if [[ "$confirm" == "y" || "$confirm" == "Y" ]]; then
echo "🗑 Deleting files..." | tee -a "$LOG_FILE"
echo "$FILES" | xargs rm -v | tee -a "$LOG_FILE"
echo " Cleanup completed at $(date)" | tee -a "$LOG_FILE"
else
echo " No files were removed." | tee -a "$LOG_FILE"
fi
''

View File

@@ -1,32 +0,0 @@
{
pkgs,
username,
...
}: let
desktopEntriesPath = "/home/${username}/.local/state/home-manager/gcroots/current-home/home-path/share/applications/";
in
pkgs.writeShellScriptBin "list-keybinds" ''
# check if rofi is already running
if pidof rofi > /dev/null; then
pkill rofi
fi
msg=' = Windows/Super/CAPS LOCK (Enter nie wykonuje skrótu)'
keybinds=$(cat ~/.config/hypr/hyprland.conf | grep -E '^bind')
# replace $modifier with SUPER and clean up paths
display_keybinds=$(echo "$keybinds" | sed 's/\$modifier//g' | sed 's|${desktopEntriesPath}/||g')
# remove "bind=" and "bindm=" prefixes
display_keybinds=$(echo "$display_keybinds" | sed 's/^bind=//' | sed 's/^bindm=/🖱/')
# add + before CONTROL, SHIFT, ALT when they appear after removed $modifier
display_keybinds=$(echo "$display_keybinds" | sed 's/ CONTROL/ + CONTROL/g' | sed 's/ SHIFT/ + SHIFT/g' | sed 's/ ALT/ + ALT/g')
# replace commas: first comma -> " +", second comma -> " =", remaining commas -> " ->"
display_keybinds=$(echo "$display_keybinds" | sed 's/,/ +/1' | sed 's/,/ =/1' | sed 's/,/ ->/g')
# use rofi to display the keybinds with the modified content
echo "$display_keybinds" | rofi -dmenu -i -config ~/.config/rofi/config-long.rasi -mesg "$msg"
''

View File

@@ -1,20 +0,0 @@
{pkgs, ...}:
pkgs.writeShellScriptBin "note-from-clipboard" ''
#!/usr/bin/env bash
# Check clipboard content type
clipboard_type=$(${pkgs.wl-clipboard}/bin/wl-paste --list-types | head -n 1)
if [[ "$clipboard_type" == "text/plain"* ]]; then
# It's text, let's create a note
${pkgs.wl-clipboard}/bin/wl-paste | note
if [ $? -eq 0 ]; then
${pkgs.libnotify}/bin/notify-send -t 3000 "📝 Note Created" "Clipboard content added as a new note."
else
${pkgs.libnotify}/bin/notify-send -t 5000 -u critical " Note Creation Failed" "There was an error creating the note."
fi
else
# It's not text, so we do nothing and notify the user
${pkgs.libnotify}/bin/notify-send -t 4000 -u low "📋 Note Skipped" "Clipboard does not contain text."
fi
''

View File

@@ -1,244 +0,0 @@
{pkgs, ...}:
pkgs.writeShellScriptBin "note" ''
# Colors for nice output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
MAGENTA='\033[0;35m'
CYAN='\033[0;36m'
WHITE='\033[1;37m'
GRAY='\033[0;37m'
BOLD='\033[1m'
NC='\033[0m' # No Color
# XDG-compliant notes directory and file
NOTES_DIR="$HOME/.local/share/notes"
NOTES_FILE="$NOTES_DIR/notes.txt"
# Create notes directory if it doesn't exist
mkdir -p "$NOTES_DIR"
# Function to display usage
show_usage() {
echo -e "''${BOLD}''${BLUE}📝 Note Manager''${NC}"
echo -e "''${GRAY}Usage:''${NC}"
echo -e " ''${CYAN}note''${NC} ''${YELLOW}<text>''${NC} - Add a new note"
echo -e " ''${CYAN}note''${NC} - Display all notes"
echo -e " ''${CYAN}note del''${NC} ''${YELLOW}<number>''${NC} - Delete note by number"
echo -e " ''${CYAN}note clear''${NC} - Clear all notes"
echo -e " ''${CYAN}echo 'text' | note''${NC} - Add note from stdin"
echo -e " ''${CYAN}cat file | note''${NC} - Add file contents as note"
echo ""
echo -e "''${GRAY}Examples:''${NC}"
echo -e " ''${GREEN}note call plumber tomorrow''${NC}"
echo -e " ''${GREEN}cat todo.txt | note''${NC}"
echo -e " ''${GREEN}note del 3''${NC}"
}
# Function to add a note
add_note() {
local note_text="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
local date_only=$(date '+%Y-%m-%d')
# Create notes file if it doesn't exist
touch "$NOTES_FILE"
# Get next note number
local note_num=1
if [ -f "$NOTES_FILE" ] && [ -s "$NOTES_FILE" ]; then
note_num=$(grep -E "^#[0-9]+" "$NOTES_FILE" | sed 's/^#\([0-9]*\).*/\1/' | sort -n | tail -1)
note_num=$((note_num + 1))
fi
# Add the note with proper formatting
{
echo "#$note_num [$timestamp]"
echo "$note_text"
echo ""
} >> "$NOTES_FILE"
echo -e "''${GREEN}''${NC} Note #$note_num added ''${GRAY}($date_only)''${NC}"
}
# Function to display all notes
display_notes() {
if [ ! -f "$NOTES_FILE" ] || [ ! -s "$NOTES_FILE" ]; then
echo -e "''${YELLOW}📝 No notes found''${NC}"
echo -e "''${GRAY}Use ''${CYAN}note <text>''${GRAY} to add your first note''${NC}"
return
fi
echo -e "''${BOLD}''${BLUE}📝 Your Notes''${NC}"
echo -e "''${GRAY}📁 $NOTES_FILE''${NC}"
echo -e "''${GRAY}$(printf '%.0s' {1..50})''${NC}"
local in_note=false
local note_content=""
while IFS= read -r line; do
# Check if line starts with # followed by numbers and space and [
if echo "$line" | grep -q "^#[0-9][0-9]* \["; then
# Print previous note content if exists
if [ "$in_note" = true ] && [ -n "$note_content" ]; then
echo -e "$note_content"
echo ""
fi
# Extract note number and timestamp
local num=$(echo "$line" | sed 's/^#\([0-9]*\) \[.*/\1/')
local timestamp=$(echo "$line" | sed 's/^#[0-9]* \[\(.*\)\]/\1/')
local date_part=$(echo "$timestamp" | cut -d' ' -f1)
local time_part=$(echo "$timestamp" | cut -d' ' -f2)
echo -e "''${BOLD}''${CYAN}#$num''${NC} ''${GRAY}[$date_part ''${YELLOW}$time_part''${GRAY}]''${NC}"
in_note=true
note_content=""
elif [ -n "$line" ] && [ "$in_note" = true ]; then
# Accumulate note content
if [ -z "$note_content" ]; then
note_content="''${WHITE}$line''${NC}"
else
note_content="$note_content\n''${WHITE}$line''${NC}"
fi
elif [ -z "$line" ] && [ "$in_note" = true ]; then
# End of current note
if [ -n "$note_content" ]; then
echo -e "$note_content"
echo ""
fi
in_note=false
note_content=""
fi
done < "$NOTES_FILE"
# Print last note if file doesn't end with empty line
if [ "$in_note" = true ] && [ -n "$note_content" ]; then
echo -e "$note_content"
echo ""
fi
local total_notes=$(grep -c "^#[0-9]" "$NOTES_FILE")
echo -e "''${GRAY}$(printf '%.0s' {1..50})''${NC}"
echo -e "''${GRAY}Total: ''${BOLD}$total_notes''${NC} ''${GRAY}notes''${NC}"
}
# Function to delete a note
delete_note() {
local note_num="$1"
if [ ! -f "$NOTES_FILE" ] || [ ! -s "$NOTES_FILE" ]; then
echo -e "''${RED}''${NC} No notes found"
return 1
fi
if ! echo "$note_num" | grep -q "^[0-9][0-9]*$"; then
echo -e "''${RED}''${NC} Invalid note number: $note_num"
return 1
fi
# Check if note exists
if ! grep -q "^#$note_num " "$NOTES_FILE"; then
echo -e "''${RED}''${NC} Note #$note_num not found"
return 1
fi
# Create temporary file without the specified note
local temp_file=$(mktemp)
local skip_lines=false
while IFS= read -r line; do
if echo "$line" | grep -q "^#[0-9][0-9]* "; then
local current_num=$(echo "$line" | sed 's/^#\([0-9]*\) .*/\1/')
if [ "$current_num" = "$note_num" ]; then
skip_lines=true
continue
else
skip_lines=false
fi
fi
if [ "$skip_lines" = false ]; then
echo "$line" >> "$temp_file"
elif [ -z "$line" ]; then
# Stop skipping when we hit an empty line (end of note)
skip_lines=false
fi
done < "$NOTES_FILE"
mv "$temp_file" "$NOTES_FILE"
echo -e "''${GREEN}''${NC} Note #$note_num deleted"
}
# Function to clear all notes
clear_notes() {
if [ ! -f "$NOTES_FILE" ] || [ ! -s "$NOTES_FILE" ]; then
echo -e "''${YELLOW}📝 No notes to clear''${NC}"
return
fi
local total_notes=$(grep -c "^#[0-9]" "$NOTES_FILE")
echo -e "''${YELLOW}''${NC} This will delete all $total_notes notes. Are you sure? ''${GRAY}[y/N]''${NC}"
read -r confirmation
if echo "$confirmation" | grep -qi "^y"; then
> "$NOTES_FILE"
echo -e "''${GREEN}''${NC} All notes cleared"
else
echo -e "''${BLUE}''${NC} Operation cancelled"
fi
}
# Main script logic
main() {
# Check if input is being piped
if [ ! -t 0 ]; then
# Read from stdin (pipe)
local piped_content=""
while IFS= read -r line; do
if [ -z "$piped_content" ]; then
piped_content="$line"
else
piped_content="$piped_content"$'\n'"$line"
fi
done
if [ -n "$piped_content" ]; then
add_note "$piped_content"
else
echo -e "''${RED}''${NC} No input received from pipe"
exit 1
fi
return
fi
# Handle command line arguments
case "$1" in
"")
display_notes
;;
"del")
if [ -z "$2" ]; then
echo -e "''${RED}''${NC} Please specify note number to delete"
echo -e "''${GRAY}Usage: ''${CYAN}note del <number>''${NC}"
exit 1
fi
delete_note "$2"
;;
"clear")
clear_notes
;;
"help"|"--help"|"-h")
show_usage
;;
*)
# Everything else is treated as note content
add_note "$*"
;;
esac
}
main "$@"
''

View File

@@ -0,0 +1,54 @@
#!/usr/bin/env bash
set -euo pipefail
# Restart the Noctalia QuickShell session by terminating only the noctalia-shell
# processes, avoiding any signals to unrelated process groups (e.g. Hyprland).
log() { printf "[restart.noctalia] %s\n" "$*"; }
list_target_pids() {
# Collect only PIDs whose command explicitly runs noctalia-shell
# - direct wrapper: ".../noctalia-shell"
# - quickshell/qs with "-c noctalia-shell"
ps -eo pid=,cmd= \
| ${GREP:-grep} -E "(^|/)(noctalia-shell)( |$)|(^| )((qs|quickshell))( | ).*-c( |=)?noctalia-shell( |$)" \
| awk '{print $1}'
}
terminate_targets() {
local pids left tries
mapfile -t pids < <(list_target_pids || true)
if ((${#pids[@]} > 0)); then
kill -TERM "${pids[@]}" 2>/dev/null || true
fi
# Wait up to ~3s for clean exit
for tries in {1..15}; do
mapfile -t left < <(list_target_pids || true)
((${#left[@]} == 0)) && break
sleep 0.2
done
# Force kill leftovers only (do not touch anything else)
if ((${#left[@]} > 0)); then
kill -KILL "${left[@]}" 2>/dev/null || true
fi
}
start_noctalia() {
# Prefer the noctalia-shell wrapper to ensure proper env and runtime flags
if command -v noctalia-shell >/dev/null 2>&1; then
nohup setsid noctalia-shell >/dev/null 2>&1 &
elif command -v quickshell >/dev/null 2>&1; then
nohup setsid quickshell -c noctalia-shell >/dev/null 2>&1 &
elif command -v qs >/dev/null 2>&1; then
nohup setsid qs -c noctalia-shell >/dev/null 2>&1 &
else
echo "Error: noctalia-shell/quickshell/qs not found in PATH" >&2
exit 1
fi
}
terminate_targets
start_noctalia

View File

@@ -0,0 +1,24 @@
{pkgs, ...}: let
binPath = pkgs.lib.makeBinPath [
pkgs.coreutils
pkgs.procps
pkgs.psmisc
pkgs.gnugrep
pkgs.findutils
pkgs.util-linux
pkgs.bash
];
script = builtins.readFile ./restart.noctalia;
in
pkgs.writeShellScriptBin "restart.noctalia" ''
set -euo pipefail
export PATH=${binPath}:$PATH
tmp_script=$(mktemp)
trap 'rm -f "$tmp_script"' EXIT
cat > "$tmp_script" <<'BASH_EOF'
${script}
BASH_EOF
chmod +x "$tmp_script"
exec ${pkgs.bash}/bin/bash "$tmp_script" "$@"
''

View File

@@ -1,8 +0,0 @@
{pkgs}:
pkgs.writeShellScriptBin "rofi-launcher" ''
# check if rofi is already running
if pidof rofi > /dev/null; then
pkill rofi
fi
rofi -show drun
''

View File

@@ -1,5 +0,0 @@
{pkgs}:
pkgs.writeShellScriptBin "task-waybar" ''
sleep 0.1
${pkgs.swaynotificationcenter}/bin/swaync-client -t &
''

View File

@@ -1,23 +0,0 @@
{pkgs, ...}:
pkgs.writeShellScriptBin "wallsetter" ''
TIMEOUT=720
for pid in $(pidof -o %PPID -x wallsetter); do
kill $pid
done
if ! [ -d ~/Pictures/Wallpapers ]; then notify-send -t 5000 "~/Pictures/Wallpapers does not exist" && exit 1; fi
if [ $(ls -1 ~/Pictures/Wallpapers | wc -l) -lt 1 ]; then notify-send -t 9000 "The wallpaper folder is expected to have more than 1 image. Exiting Wallsetter." && exit 1; fi
while true; do
while [ "$WALLPAPER" == "$PREVIOUS" ]; do
WALLPAPER=$(find ~/Pictures/Wallpapers -name '*' | awk '!/.git/' | tail -n +2 | shuf -n 1)
done
PREVIOUS=$WALLPAPER
${pkgs.swww}/bin/swww img "$WALLPAPER" --transition-type random --transition-step 1 --transition-fps 60
sleep $TIMEOUT
done
''

View File

@@ -1,59 +0,0 @@
{pkgs}:
pkgs.writeShellScriptBin "web-search" ''
# check if rofi is already running
if pidof rofi > /dev/null; then
pkill rofi
fi
declare -A URLS
URLS=(
[" Search"]="https://search.garandplg.com/search?q="
[" Nix Unstable Packages"]="https://search.nixos.org/packages?channel=unstable&query="
[" Nix Options"]="https://search.nixos.org/options?query="
[" Nix Wiki"]="https://wiki.nixos.org/w/index.php?search="
[" Home Manager Options"]="https://home-manager-options.extranix.com/release=master?query="
[" Kalkulator walutowy EUR"]="https://www.money.pl/pieniadze/kalkulator/?currencyFrom=EUR&currencyTo=PLN&amount="
["\$ Kalkulator walutowy USD"]="https://www.money.pl/pieniadze/kalkulator/?currencyFrom=USD&currencyTo=PLN&amount="
[" YouTube"]="https://www.youtube.com/results?search_query="
[" Wikipedia PL"]="https://pl.wikipedia.org/w/index.php?search="
[" StackOverflow"]="https://stackoverflow.com/search?q="
[" Eneba"]="https://www.eneba.com/pl/store/all?text="
[" Kinguin"]="https://www.kinguin.net/listing?active=1&hideUnavailable=0&type=kinguin?phrase="
[" Instant Gaming"]="https://www.instant-gaming.com/pl/search/?q="
[" Morele"]="https://www.morele.net/wyszukiwarka/?q="
[" X-kom"]="https://www.x-kom.pl/szukaj?q="
[" Komputrnik"]="https://www.komputronik.pl/search/category/1?q="
[" Allegro"]="https://allegro.pl/listing?string="
)
# List for rofi
gen_list() {
for i in "''${!URLS[@]}"
do
echo "$i"
done
}
main() {
# Pass the list to rofi
platform=$( (gen_list) | ${pkgs.rofi}/bin/rofi -dmenu -config ~/.config/rofi/config-long.rasi )
if [[ -n "$platform" ]]; then
query=$( (echo ) | ${pkgs.rofi}/bin/rofi -dmenu -config ~/.config/rofi/config-long.rasi )
if [[ -n "$query" ]]; then
url=''${URLS[$platform]}$query
xdg-open "$url"
else
exit
fi
else
exit
fi
}
main
exit 0
''

View File

@@ -1,11 +1,17 @@
_: { {username, ...}: {
programs.ssh = { programs.ssh = {
enable = true; enable = true;
enableDefaultConfig = false; enableDefaultConfig = false;
matchBlocks = { matchBlocks = {
"hp-t640-homeserver" = { "hp-t640-homeserver" = {
hostname = "192.168.1.156"; hostname = "192.168.1.156";
user = "garand_plg"; user = "${username}";
port = 22;
identityFile = "~/.ssh/hp-t640-homeserver";
};
"hp-t640-homeserver-tailscale" = {
hostname = "100.106.225.106";
user = "${username}";
port = 22; port = 22;
identityFile = "~/.ssh/hp-t640-homeserver"; identityFile = "~/.ssh/hp-t640-homeserver";
}; };

View File

@@ -1,10 +1,7 @@
{host, ...}: { {host, ...}: {
stylix.targets = { stylix.targets = {
librewolf.profileNames = ["${host}"]; librewolf.profileNames = ["${host}"];
waybar.enable = false;
rofi.enable = false;
hyprland.enable = false; hyprland.enable = false;
hyprlock.enable = false;
vscode.enable = false; vscode.enable = false;
zed.enable = false; zed.enable = false;
vesktop.enable = false; vesktop.enable = false;
@@ -12,5 +9,6 @@
enable = true; enable = true;
platform = "qtct"; platform = "qtct";
}; };
noctalia-shell.enable = true;
}; };
} }

View File

@@ -1,11 +0,0 @@
{pkgs, ...}: {
services.swaync = {
enable = true;
package = pkgs.swaynotificationcenter;
};
imports = [
./settings.nix
./style.nix
];
}

View File

@@ -1,59 +0,0 @@
_: {
services.swaync.settings = {
positionX = "right";
positionY = "top";
layer = "overlay";
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 = 1025;
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;
widget-config = {
title = {
text = "Notification Center";
clear-all-button = true;
button-text = "󰆴 Clear All";
};
dnd = {
text = "Do Not Disturb";
};
label = {
max-lines = 1;
text = "Notification Center";
};
mpris = {
image-size = 96;
image-radius = 7;
};
volume = {
label = "󰕾";
};
backlight = {
label = "󰃟";
};
};
widgets = [
"title"
"mpris"
"volume"
"backlight"
"dnd"
"notifications"
];
};
}

View File

@@ -1,251 +0,0 @@
{config, ...}: {
services.swaync.style = ''
* {
font-family: JetBrainsMono Nerd Font Mono;
font-weight: bold;
}
.control-center .notification-row:focus,
.control-center .notification-row:hover {
opacity: 0.9;
background: #${config.lib.stylix.colors.base00}
}
.notification-row {
outline: none;
margin: 10px;
padding: 0;
}
.notification {
background: transparent;
padding: 0;
margin: 0px;
}
.notification-content {
background: #${config.lib.stylix.colors.base00};
padding: 10px;
border-radius: 5px;
border: 2px solid #${config.lib.stylix.colors.base0D};
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;
}
.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}
}
'';
}

View File

@@ -1,277 +0,0 @@
{
pkgs,
lib,
host,
config,
...
}: let
betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)";
inherit (import ../../../hosts/${host}/variables.nix) clock24h;
in
with lib; {
# Configure & Theme Waybar
programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = [
{
layer = "top";
position = "top";
modules-center = ["hyprland/workspaces"];
modules-left = [
"custom/startmenu"
"hyprland/window"
"pulseaudio"
"cpu"
"memory"
"idle_inhibitor"
];
modules-right = [
"custom/hyprbindings"
"custom/notification"
"custom/exit"
"battery"
"tray"
"clock"
];
"hyprland/workspaces" = {
format = "{name}";
format-icons = {
default = " ";
active = " ";
urgent = " ";
};
on-scroll-up = "hyprctl dispatch workspace e+1";
on-scroll-down = "hyprctl dispatch workspace e-1";
};
"clock" = {
format =
if clock24h == true
then '' {:L%H:%M}''
else '' {:L%I:%M %p}'';
tooltip = true;
tooltip-format = "<big>{:%A, %d.%B %Y }</big>\n<tt><small>{calendar}</small></tt>";
};
"hyprland/window" = {
max-length = 22;
separate-outputs = false;
rewrite = {
"" = " 🙈 No Windows? ";
};
};
"memory" = {
interval = 5;
format = " {}%";
tooltip = true;
};
"cpu" = {
interval = 5;
format = " {usage:2}%";
tooltip = true;
};
"disk" = {
format = " {free}";
tooltip = true;
};
"network" = {
format-icons = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
format-ethernet = " {bandwidthDownOctets}";
format-wifi = "{icon} {signalStrength}%";
format-disconnected = "󰤮";
tooltip = false;
};
"tray" = {
spacing = 12;
};
"pulseaudio" = {
format = "{icon} {volume}% {format_source}";
format-bluetooth = "{volume}% {icon} {format_source}";
format-bluetooth-muted = " {icon} {format_source}";
format-muted = " {format_source}";
format-source = " {volume}%";
format-source-muted = "";
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = [
""
""
""
];
};
on-click = "sleep 0.1 && pavucontrol";
};
"custom/exit" = {
tooltip = false;
format = "";
on-click = "sleep 0.1 && wlogout";
};
"custom/startmenu" = {
tooltip = false;
format = "";
# exec = "rofi -show drun";
on-click = "sleep 0.1 && rofi-launcher";
};
"custom/hyprbindings" = {
tooltip = false;
format = "󱕴";
on-click = "sleep 0.1 && list-keybinds";
};
"idle_inhibitor" = {
format = "{icon}";
format-icons = {
activated = "";
deactivated = "";
};
tooltip = "true";
};
"custom/notification" = {
tooltip = false;
format = "{icon} {}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = "";
inhibited-notification = "<span foreground='red'><sup></sup></span>";
inhibited-none = "";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
dnd-inhibited-none = "";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "sleep 0.1 && task-waybar";
escape = true;
};
"battery" = {
states = {
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
format-charging = "󰂄 {capacity}%";
format-plugged = "󱘖 {capacity}%";
format-icons = [
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
on-click = "";
tooltip = false;
};
}
];
style = concatStrings [
''
* {
font-family: JetBrainsMono Nerd Font Mono;
font-size: 16px;
border-radius: 0px;
border: none;
min-height: 0px;
}
window#waybar {
background: rgba(0,0,0,0);
}
#workspaces {
color: #${config.lib.stylix.colors.base00};
background: #${config.lib.stylix.colors.base01};
margin: 4px 4px;
padding: 5px 5px;
border-radius: 16px;
}
#workspaces button {
font-weight: bold;
padding: 0px 5px;
margin: 0px 3px;
border-radius: 16px;
color: #${config.lib.stylix.colors.base00};
background: linear-gradient(45deg, #${config.lib.stylix.colors.base08}, #${config.lib.stylix.colors.base0D});
opacity: 0.5;
transition: ${betterTransition};
}
#workspaces button.active {
font-weight: bold;
padding: 0px 5px;
margin: 0px 3px;
border-radius: 16px;
color: #${config.lib.stylix.colors.base00};
background: linear-gradient(45deg, #${config.lib.stylix.colors.base08}, #${config.lib.stylix.colors.base0D});
transition: ${betterTransition};
opacity: 1.0;
min-width: 40px;
}
#workspaces button:hover {
font-weight: bold;
border-radius: 16px;
color: #${config.lib.stylix.colors.base00};
background: linear-gradient(45deg, #${config.lib.stylix.colors.base08}, #${config.lib.stylix.colors.base0D});
opacity: 0.8;
transition: ${betterTransition};
}
tooltip {
background: #${config.lib.stylix.colors.base00};
border: 1px solid #${config.lib.stylix.colors.base08};
border-radius: 12px;
}
tooltip label {
color: #${config.lib.stylix.colors.base08};
}
#window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
font-weight: bold;
margin: 4px 0px;
margin-left: 7px;
padding: 0px 18px;
background: #${config.lib.stylix.colors.base04};
color: #${config.lib.stylix.colors.base00};
border-radius: 24px 10px 24px 10px;
}
#custom-startmenu {
color: #${config.lib.stylix.colors.base0B};
background: #${config.lib.stylix.colors.base02};
font-size: 28px;
margin: 0px;
padding: 0px 30px 0px 15px;
border-radius: 0px 0px 40px 0px;
}
#custom-hyprbindings, #network, #battery,
#custom-notification, #tray, #custom-exit {
font-weight: bold;
background: #${config.lib.stylix.colors.base0F};
color: #${config.lib.stylix.colors.base00};
margin: 4px 0px;
margin-right: 7px;
border-radius: 10px 24px 10px 24px;
padding: 0px 18px;
}
#clock {
font-weight: bold;
color: #0D0E15;
background: linear-gradient(90deg, #${config.lib.stylix.colors.base0E}, #${config.lib.stylix.colors.base0C});
margin: 0px;
padding: 0px 15px 0px 30px;
border-radius: 0px 0px 0px 40px;
}
''
];
};
}

View File

@@ -1,385 +0,0 @@
{
pkgs,
lib,
...
}: let
terminal = "kitty";
base00 = "0F1419";
base01 = "131721";
base03 = "3E4B59";
base05 = "E6E1CF";
base06 = "E6E1CF";
base07 = "F3F4F5";
base08 = "F07178";
base09 = "FF8F40";
base0A = "FFB454";
base0B = "B8CC52";
base0C = "95E6CB";
base0D = "59C2FF";
base0E = "D2A6FF";
base0F = "E6B673";
in
with lib; {
# Configure & Theme Waybar
programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = [
{
layer = "top";
position = "top";
modules-left = [
"custom/startmenu"
"tray"
"hyprland/window"
];
modules-center = ["hyprland/workspaces"];
modules-right = [
"idle_inhibitor"
"custom/notification"
"pulseaudio"
"battery"
"clock"
"custom/exit"
];
"hyprland/workspaces" = {
format = "{name}";
format-icons = {
default = " ";
active = " ";
urgent = " ";
};
on-scroll-up = "hyprctl dispatch workspace e+1";
on-scroll-down = "hyprctl dispatch workspace e-1";
};
"clock" = {
format = '' {:%H:%M}'';
# ''{: %I:%M %p}'';
tooltip = true;
tooltip-format = "<big>{:%A, %d.%B %Y }</big><tt><small>{calendar}</small></tt>";
};
"hyprland/window" = {
max-length = 60;
separate-outputs = false;
};
"memory" = {
interval = 5;
format = " {}%";
tooltip = true;
on-click = "${terminal} -e btop";
};
"cpu" = {
interval = 5;
format = " {usage:2}%";
tooltip = true;
on-click = "${terminal} -e btop";
};
"disk" = {
format = " {free}";
tooltip = true;
# Not working with garandos window open then closes
#on-click = "${terminal} -e sh -c df -h ; read";
};
"network" = {
format-icons = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
format-ethernet = " {bandwidthDownBits}";
format-wifi = " {bandwidthDownBits}";
format-disconnected = "󰤮";
tooltip = false;
on-click = "${terminal} -e btop";
};
"tray" = {
spacing = 12;
};
"pulseaudio" = {
format = "{icon} {volume}% {format_source}";
format-bluetooth = "{volume}% {icon} {format_source}";
format-bluetooth-muted = " {icon} {format_source}";
format-muted = " {format_source}";
format-source = " {volume}%";
format-source-muted = "";
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = [
""
""
""
];
};
on-click = "pavucontrol";
};
"custom/exit" = {
tooltip = false;
format = "";
on-click = "sleep 0.1 && wlogout";
};
"custom/startmenu" = {
tooltip = false;
format = " ";
# exec = "rofi -show drun";
on-click = "rofi -show drun";
};
"idle_inhibitor" = {
format = "{icon}";
format-icons = {
activated = " ";
deactivated = " ";
};
tooltip = "true";
};
"custom/notification" = {
tooltip = false;
format = "{icon} {}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = "";
inhibited-notification = "<span foreground='red'><sup></sup></span>";
inhibited-none = "";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
dnd-inhibited-none = "";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "swaync-client -t";
escape = true;
};
"battery" = {
states = {
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
format-charging = "󰂄 {capacity}%";
format-plugged = "󱘖 {capacity}%";
format-icons = [
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
on-click = "";
tooltip = false;
};
}
];
style = concatStrings [
''
* {
font-size: 16px;
font-family: JetBrainsMono Nerd Font, Font Awesome, sans-serif;
font-weight: bold;
}
window#waybar {
/*
background-color: rgba(26,27,38,0);
border-bottom: 1px solid rgba(26,27,38,0);
border-radius: 0px;
color: #${base0F};
*/
background-color: rgba(26,27,38,0);
border-bottom: 1px solid rgba(26,27,38,0);
border-radius: 0px;
color: #${base0F};
}
#workspaces {
/*
Eternal
background: linear-gradient(180deg, #${base00}, #${base01});
margin: 5px 5px 5px 0px;
padding: 0px 10px;
border-radius: 0px 15px 15px 0px;
border: 0px;
font-style: normal;
color: #${base00};
*/
background: linear-gradient(45deg, #${base01}, #${base01});
margin: 5px;
padding: 0px 1px;
border-radius: 15px;
border: 0px;
font-style: normal;
color: #${base00};
}
#workspaces button {
padding: 0px 5px;
margin: 4px 3px;
border-radius: 15px;
border: 0px;
color: #${base00};
background: linear-gradient(45deg, #${base0D}, #${base0E});
opacity: 0.5;
transition: all 0.3s ease-in-out;
}
#workspaces button.active {
padding: 0px 5px;
margin: 4px 3px;
border-radius: 15px;
border: 0px;
color: #${base00};
background: linear-gradient(45deg, #${base0D}, #${base0E});
opacity: 1.0;
min-width: 40px;
transition: all 0.3s ease-in-out;
}
#workspaces button:hover {
border-radius: 15px;
color: #${base00};
background: linear-gradient(45deg, #${base0D}, #${base0E});
opacity: 0.8;
}
tooltip {
background: #${base00};
border: 1px solid #${base0E};
border-radius: 10px;
}
tooltip label {
color: #${base07};
}
#window {
/*
Eternal
color: #${base05};
background: #${base00};
border-radius: 15px;
margin: 5px;
padding: 2px 20px;
*/
margin: 5px;
padding: 2px 20px;
color: #${base05};
background: #${base01};
border-radius: 15px 15px 15px 15px;
}
#memory {
color: #${base0F};
/*
Eternal
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 5px;
padding: 2px 20px;
*/
background: #${base01};
margin: 5px;
padding: 2px 20px;
border-radius: 15px 15px 15px 15px;
}
#clock {
color: #${base0B};
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 5px;
padding: 2px 20px;
}
#idle_inhibitor {
color: #${base0A};
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 3px;
padding: 2px 20px;
}
#cpu {
color: #${base07};
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 5px;
padding: 2px 20px;
}
#disk {
color: #${base0F};
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 5px;
padding: 2px 20px;
}
#battery {
color: #${base08};
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 5px;
padding: 2px 20px;
}
#network {
color: #${base09};
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 5px;
padding: 2px 20px;
}
#tray {
color: #${base05};
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 5px;
padding: 2px 15px;
}
#pulseaudio {
color: #${base0D};
/*
Eternal
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 5px;
padding: 2px 20px;
*/
background: #${base01};
margin: 4px;
padding: 2px 20px;
border-radius: 15px 15px 15px 15px;
}
#custom-notification {
color: #${base0C};
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 5px;
padding: 2px 20px;
}
#custom-startmenu {
color: #${base0E};
background: #${base00};
border-radius: 0px 15px 15px 0px;
margin: 5px 5px 5px 0px;
padding: 2px 20px;
}
#idle_inhibitor {
color: #${base09};
background: #${base00};
border-radius: 15px 15px 15px 15px;
margin: 5px;
padding: 2px 20px;
}
#custom-exit {
color: #${base0E};
background: #${base00};
border-radius: 15px 0px 0px 15px;
margin: 5px 0px 5px 5px;
padding: 2px 20px;
}
''
];
};
}

View File

@@ -1,283 +0,0 @@
{
pkgs,
lib,
host,
config,
...
}: let
betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)";
inherit (import ../../../hosts/${host}/variables.nix) clock24h;
in
with lib; {
# Configure & Theme Waybar
programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = [
{
layer = "top";
position = "top";
modules-center = ["hyprland/workspaces"];
modules-left = [
"custom/startmenu"
"hyprland/window"
"pulseaudio"
"cpu"
"memory"
"idle_inhibitor"
];
modules-right = [
"custom/hyprbindings"
"custom/notification"
"custom/exit"
"battery"
"tray"
"clock"
];
"hyprland/workspaces" = {
format = "{name}";
format-icons = {
default = " ";
active = " ";
urgent = " ";
};
on-scroll-up = "hyprctl dispatch workspace e+1";
on-scroll-down = "hyprctl dispatch workspace e-1";
};
"clock" = {
format =
if clock24h == true
then '' {:L%H:%M}''
else '' {:L%I:%M %p}'';
tooltip = true;
tooltip-format = "<big>{:%A, %d.%B %Y }</big>\n<tt><small>{calendar}</small></tt>";
};
"hyprland/window" = {
max-length = 22;
separate-outputs = false;
rewrite = {
"" = " 🙈 No Windows? ";
};
};
"memory" = {
interval = 5;
format = " {}%";
tooltip = true;
};
"cpu" = {
interval = 5;
format = " {usage:2}%";
tooltip = true;
};
"disk" = {
format = " {free}";
tooltip = true;
};
"network" = {
format-icons = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
format-ethernet = " {bandwidthDownOctets}";
format-wifi = "{icon} {signalStrength}%";
format-disconnected = "󰤮";
tooltip = false;
};
"tray" = {
spacing = 12;
};
"pulseaudio" = {
format = "{icon} {volume}% {format_source}";
format-bluetooth = "{volume}% {icon} {format_source}";
format-bluetooth-muted = " {icon} {format_source}";
format-muted = " {format_source}";
format-source = " {volume}%";
format-source-muted = "";
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = [
""
""
""
];
};
on-click = "sleep 0.1 && pavucontrol";
};
"custom/exit" = {
tooltip = false;
format = "";
on-click = "sleep 0.1 && wlogout";
};
"custom/startmenu" = {
tooltip = false;
format = "";
# exec = "rofi -show drun";
#on-click = "sleep 0.1 && rofi-launcher";
on-click = "sleep 0.1 && nwg-drawer -mb 200 -mt 200 -mr 200 -ml 200";
};
"custom/hyprbindings" = {
tooltip = false;
format = "󱕴";
on-click = "sleep 0.1 && list-keybinds";
};
"idle_inhibitor" = {
format = "{icon}";
format-icons = {
activated = "";
deactivated = "";
};
tooltip = "true";
};
"custom/notification" = {
tooltip = false;
format = "{icon} {}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = "";
inhibited-notification = "<span foreground='red'><sup></sup></span>";
inhibited-none = "";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
dnd-inhibited-none = "";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "sleep 0.1 && task-waybar";
escape = true;
};
"battery" = {
states = {
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
format-charging = "󰂄 {capacity}%";
format-plugged = "󱘖 {capacity}%";
format-icons = [
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
on-click = "";
tooltip = false;
};
}
];
style = concatStrings [
''
* {
font-family: JetBrainsMono Nerd Font Mono;
font-size: 18px;
border-radius: 0px;
border: none;
min-height: 0px;
}
window#waybar {
background: rgba(0,0,0,0);
}
#workspaces {
color: #${config.lib.stylix.colors.base00};
background: #${config.lib.stylix.colors.base01};
margin: 4px 4px;
padding: 5px 5px;
border-radius: 16px;
}
#workspaces button {
font-weight: bold;
padding: 0px 5px;
margin: 0px 3px;
border-radius: 16px;
color: #${config.lib.stylix.colors.base00};
background: linear-gradient(45deg, #${config.lib.stylix.colors.base08}, #${config.lib.stylix.colors.base0D});
opacity: 0.5;
transition: ${betterTransition};
}
#workspaces button.active {
font-weight: bold;
padding: 0px 5px;
margin: 0px 3px;
border-radius: 16px;
color: #${config.lib.stylix.colors.base00};
background: linear-gradient(45deg, #${config.lib.stylix.colors.base08}, #${config.lib.stylix.colors.base0D});
transition: ${betterTransition};
opacity: 1.0;
min-width: 40px;
}
#workspaces button:hover {
font-weight: bold;
border-radius: 16px;
color: #${config.lib.stylix.colors.base00};
background: linear-gradient(45deg, #${config.lib.stylix.colors.base08}, #${config.lib.stylix.colors.base0D});
opacity: 0.8;
transition: ${betterTransition};
}
tooltip {
background: #${config.lib.stylix.colors.base00};
border: 1px solid #${config.lib.stylix.colors.base08};
border-radius: 12px;
}
tooltip label {
color: #${config.lib.stylix.colors.base08};
}
#window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
font-weight: bold;
margin: 4px 0px;
margin-left: 7px;
padding: 0px 18px;
background: #${config.lib.stylix.colors.base00};
color: #${config.lib.stylix.colors.base08};
border-radius: 8px 8px 8px 8px;
}
#idle_inhibitor {
font-size: 28px;
}
#custom-startmenu {
color: #${config.lib.stylix.colors.base0B};
background: #${config.lib.stylix.colors.base02};
font-size: 22px;
margin: 0px;
padding: 0px 5px 0px 5px;
border-radius: 16px 16px 16px 16px;
}
#custom-hyprbindings, #network, #battery,
#custom-notification, #tray, #custom-exit {
/* font-weight: bold; */
font-size: 20px;
background: #${config.lib.stylix.colors.base00};
color: #${config.lib.stylix.colors.base08};
margin: 4px 0px;
margin-right: 7px;
border-radius: 8px 8px 8px 8px;
padding: 0px 18px;
}
#clock {
font-weight: bold;
font-size: 16px;
color: #0D0E15;
background: linear-gradient(90deg, #${config.lib.stylix.colors.base0B}, #${config.lib.stylix.colors.base02});
margin: 0px;
padding: 0px 5px 0px 5px;
border-radius: 16px 16px 16px 16px;
}
''
];
};
}

View File

@@ -1,494 +0,0 @@
{
config,
pkgs,
...
}: {
programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = {
mainBar = {
layer = "top";
"modules-left" = [
"hyprland/workspaces"
"temperature"
"hyprland/window"
];
"modules-center" = ["custom/spacer"];
"modules-right" = [
"tray"
"cpu"
"memory"
"idle_inhibitor"
"clock"
"pulseaudio"
"bluetooth"
];
"hyprland/window" = {
format = "{title}";
"max-length" = 333;
"seperate-outputs" = true;
};
clock = {
format = "<span foreground='#282828'> </span><span>{:%I:%M %a %d}</span>";
"tooltip-format" = "{calendar}";
calendar = {
mode = "month";
"mode-mon-col" = 3;
"on-scroll" = 1;
"on-click-right" = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
days = "<span color='#ecc6d9'><b>{}</b></span>";
weeks = "<span color='#99ffdd'><b>{%W}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b>{}</b></span>";
};
};
actions = {
"on-click-middle" = "mode";
"on-click-right" = "shift_up";
"on-click" = "shift_down";
};
};
cpu = {
format = "<span foreground='#b8bb26'>󰯳</span> {usage}%";
};
memory = {
format = "<span foreground='#d65d9e'>󰍛</span> {}%";
interval = 1;
};
"custom/gpu-util" = {
exec = "./scripts/gpu-util";
format = "<span foreground='#67b0e8'>󰯿</span> {}";
interval = 1;
};
"custom/gpu-temp" = {
exec = "./scripts/gpu-temp";
format = "<span foreground='#e57474'></span> {}";
interval = 1;
};
temperature = {
"hwmon-path" = "/sys/class/hwmon/hwmon1/temp1_input";
"critical-threshold" = 80;
format = "<span foreground='#83a598'></span> {temperatureC}°C";
interval = 1;
};
"hyprland/workspaces" = {
format = "{icon}";
"active-only" = false;
"sort-by-number" = false;
"on-click" = "activate";
"all-outputs" = false;
"format-icons" = {
"1" = "1";
"2" = "2";
"3" = "3";
"4" = "4";
"5" = "5";
"6" = "6";
"7" = "7";
"8" = "8";
"9" = "9";
"10" = "10";
};
};
network = {
format = "󰤭 Off";
"format-wifi" = "{essid} ({signalStrength}%)";
"format-ethernet" = "<span foreground='#b48ead'>󰈀</span>";
"format-disconnected" = "󰤭 Disconnected";
"tooltip-format" = "{ifname} via {gwaddr} ";
"tooltip-format-wifi" = "{essid}({signalStrength}%) ";
"tooltip-format-ethernet" = "󰈀 {ifname}";
"tooltip-format-disconnected" = "Disconnected";
};
pulseaudio = {
format = "<span foreground='#cc241d'>{icon}</span> {volume}% {format_source}";
"format-bluetooth" = "<span foreground='#b16286'>{icon}</span> {volume}% {format_source}";
"format-bluetooth-muted" = "<span foreground='#D699B6'>󰖁</span> {format_source}";
"format-muted" = "<span foreground='#7A8478'>󰖁</span> {format_source}";
"format-source" = "<span foreground='#E67E80'></span> {volume}%";
"format-source-muted" = "<span foreground='#F38BA8'></span>";
"format-icons" = {
headphone = "";
phone = "";
portable = "";
default = [
""
""
""
];
};
"on-click-left" = "pavucontrol";
input = true;
};
"custom/playerctl" = {
format = "{icon} <span>{}</span>";
"return-type" = "json";
"max-length" = 333;
exec = "playerctl -a metadata --format '{\"text\": \"{{artist}} ~ {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F";
"on-click-middle" = "playerctl play-pause";
"on-click" = "playerctl previous";
"on-click-right" = "playerctl next";
"format-icons" = {
Playing = "<span foreground='#98BB6C'></span>";
Paused = "<span foreground='#E46876'></span>";
};
};
tray = {
format = "<span foreground='#D3C6AA'>{icon}</span>";
"icon-size" = 14;
spacing = 5;
};
idle_inhibitor = {
format = "{icon}";
"format-icons" = {
activated = "󱠛";
deactivated = "󱤱";
};
};
"custom/subs" = {
format = "<span foreground='#fbf1c7'>󰗃 </span> {}";
exec = "/usr/local/bin/subsfile.sh";
"on-click" = "vivaldi-stable https://youtube.com/thelinuxcast";
"restart-interval" = 1;
};
"custom/spacer" = {
format = " ";
};
"wlr/taskbar" = {
format = "{name}";
"icon-size" = 14;
"icon-theme" = "Numix-Circle";
"tooltip-format" = "{title}";
"on-click" = "activate";
"on-click-middle" = "close";
"ignore-list" = ["Alacritty"];
"app_ids-mapping" = {
firefoxdeveloperedition = "firefox-developer-edition";
};
rewrite = {
"Firefox Web Browser" = "Firefox";
"Foot Server" = "Terminal";
};
};
bluetooth = {
"on-click" = "./scripts/bluetooth-control";
"on-click-right" = "./scripts/rofi-bluetooth";
"on-click-middle" = "./scripts/rofi-bluetooth";
format = "{icon}";
interval = 15;
"format-icons" = {
on = "<span foreground='#43242B'></span>";
off = "<span foreground='#76946A'>󰂲</span>";
disabled = "󰂲";
connected = "";
};
"tooltip-format" = "{device_alias} {status}";
};
};
};
style = ''
@define-color background #${config.stylix.base16Scheme.base00};
@define-color foreground #${config.stylix.base16Scheme.base05};
@define-color border #${config.stylix.base16Scheme.base02};
@define-color color1 #${config.stylix.base16Scheme.base01};
@define-color color2 #${config.stylix.base16Scheme.base02};
@define-color color3 #${config.stylix.base16Scheme.base03};
@define-color color4 #${config.stylix.base16Scheme.base04};
@define-color color5 #${config.stylix.base16Scheme.base05};
@define-color color6 #${config.stylix.base16Scheme.base06};
@define-color color7 #${config.stylix.base16Scheme.base07};
@define-color color8 #${config.stylix.base16Scheme.base08};
@define-color color9 #${config.stylix.base16Scheme.base09};
@define-color color10 #${config.stylix.base16Scheme.base0A};
@define-color color11 #${config.stylix.base16Scheme.base0B};
@define-color color12 #${config.stylix.base16Scheme.base0C};
@define-color color13 #${config.stylix.base16Scheme.base0D};
@define-color color14 #${config.stylix.base16Scheme.base0E};
@define-color color15 #${config.stylix.base16Scheme.base0F};
* {
min-height: 0;
margin: 0;
padding: 0;
font-family: "JetBrains Mono Nerd Font";
font-size: 14pt;
font-weight: 700;
padding-bottom: 0px;
}
tooltip {
background: @background;
border: 2px solid @border;
}
#window {
margin: 0px 5px 0px 5px;
padding-left: 10px;
padding-right: 7px;
background-color: @color14;
color: #282828;
}
window#waybar.empty #window {
background-color: transparent;
border-bottom: none;
border-right: none;
}
window#waybar {
background-color:@color14;
color: @color2;
}
/* Workspaces */
#workspaces {
margin: 0px 0px 0px 0px;
padding: 0px;
background-color: @background;
color: @color7;
}
#workspaces button {
margin: 0px 0px 0px 0px;
padding-left: 3px;
padding-right: 9px;
background-color: @background;
color: @color7;
}
#workspaces button.active {
padding: 0 2px 0 1px;
color: @color3;
}
#workspaces button.urgent {
color: @color9;
}
#custom-gpu-util {
margin: 0px 5px 0px 5px;
padding-left: 10px;
padding-right: 10px;
background-color: @background;
color: @foreground;
}
#tray {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
background-color: @background;
color: @foreground;
}
#idle_inhibitor {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 12px;
background-color: @background;
color: @foreground;
}
#idle_inhibitor.activated {
color: @color9;
}
#network {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 12px;
background-color: @background;
color: @color11;
}
#network.linked {
color: @color6;
}
#network.disconnected,
#network.disabled {
color: @color4;
}
#custom-subs {
color: @foreground;
margin: 0px 5px 0px 5px;
padding-left: 10px;
padding-right: 12px;
border-bottom: 2px solid @background;
border-right: 2px solid @background;
border-color: @color8;
background-color: @color13;
}
#custom-cliphist {
color: @color14;
margin: 0px 5px 0px 5px;
padding-left: 10px;
padding-right: 12px;
background-color: @background;
}
#custom-gpu-temp,
#custom-clipboard {
margin: 0px 5px 0px 5px;
padding-left: 10px;
padding-right: 10px;
color: @foreground;
background-color: @background;
}
#cpu {
margin: 0px 0px 0px 0px;
padding-left: 6px;
padding-right: 6px;
color: @foreground;
background-color: @background;
}
#custom-cpuicon {
margin: 0px 0px 0px 0px;
padding: 0px 10px 0px 10px;
color: @color14;
background-color: @background;
}
#custom-diskicon {
margin: 0px 0px 0px 0;
padding: 0 10px 0 10px;
color: @color2;
background-color: @background;
}
#disk {
margin: 0px 0px 0px 0;
padding-left: 0px;
padding-right: 0px;
color: @foreground;
background-color: @background;
}
#custom-notification {
background-color: @background;
color: @color15;
padding: 0 12px;
margin-right: 0px;
font-size: 14px;
font-family: "JetBrainsMono Nerd Font";
}
#custom-memoryicon {
margin: 0px 0px 0px 0px;
color: @color4;
padding: 0 11px 0 7px;
background-color: @background;
}
#memory {
margin: 0px 0px 0px 0px;
padding-left: 5px;
padding-right: 10px;
color: @color4;
background-color: @background;
}
#custom-tempicon {
margin: 0px 0px 0px 0px;
color: @color10;
padding: 0 11px 0 8px;
background-color: @background;
}
#temperature {
margin: 0px 0px 0px 0px;
padding-left: 5px;
padding-right: 10px;
color: @color10;
background-color: @background;
}
#custom-playerctl {
margin: 0px 5px 0px 5px;
padding-left: 10px;
padding-right: 10px;
color: @foreground;
background-color: @background;
}
#battery,
#backlight,
#bluetooth,
#pulseaudio {
margin-top: 0px;
margin-bottom: 0px;
color: @foreground;
background-color: @background;
}
#pulseaudio {
margin-top: 0px;
margin-bottom: 0px;
color: @color15;
background-color: @background;
}
#battery,
#bluetooth {
margin-left: 0px;
margin-right: 0px;
padding-left: 0px;
padding-right: 2px;
}
#backlight,
#pulseaudio {
margin-right: 0px;
margin-left: 0px;
padding-left: 10px;
padding-right: 7.5px;
}
#clock {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
color: @color6;
background-color: @background;
}
#custom-clockicon {
margin: 0px 0 0px 0px;
color: @color6;
padding: 0 5px 0 10px;
background-color: @background;
}
#taskbar {
padding: 0 3px;
margin: 0 0px;
color: #ffffff;
background-color: rgba(120,118,117,0.3);
}
#taskbar button {
padding: 0 0 0 3px;
margin: 0px 0px;
color: #ffffff;
background-color: rgba(120,118,117,0.1);
}
#taskbar button.active {
background-color: rgba(120,118,117,0.8);
}
#mode {
margin: 0px 5px 0px 5px;
padding-left: 10px;
padding-right: 10px;
background-color: @background;
color: @color9;
}
'';
};
}

View File

@@ -1,442 +0,0 @@
{
config,
pkgs,
...
}: {
programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = {
mainBar = {
layer = "top";
"modules-left" = [
"hyprland/workspaces"
"hyprland/window"
];
"modules-center" = ["clock"];
"modules-right" = [
"tray"
"cpu"
"memory"
"idle_inhibitor"
"pulseaudio"
"bluetooth"
];
"hyprland/window" = {
format = "{title}";
"max-length" = 333;
"seperate-outputs" = true;
};
clock = {
format = "<span foreground='#282828'> </span><span>{:%I:%M %a %d}</span>";
"tooltip-format" = "{calendar}";
calendar = {
mode = "month";
"mode-mon-col" = 3;
"on-scroll" = 1;
"on-click-right" = "mode";
format = {
months = "<span color='#ffead3'><b>{}</b></span>";
days = "<span color='#ecc6d9'><b>{}</b></span>";
weeks = "<span color='#99ffdd'><b>{%W}</b></span>";
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
today = "<span color='#ff6699'><b>{}</b></span>";
};
};
actions = {
"on-click-middle" = "mode";
"on-click-right" = "shift_up";
"on-click" = "shift_down";
};
};
cpu = {
format = "<span foreground='#b8bb26'>󰯳</span> {usage}%";
};
memory = {
format = "<span foreground='#d65d9e'>󰍛</span> {}%";
interval = 1;
};
"custom/gpu-util" = {
exec = "./scripts/gpu-util";
format = "<span foreground='#67b0e8'>󰯿</span> {}";
interval = 1;
};
"custom/gpu-temp" = {
exec = "./scripts/gpu-temp";
format = "<span foreground='#e57474'></span> {}";
interval = 1;
};
temperature = {
"hwmon-path" = "/sys/class/hwmon/hwmon1/temp1_input";
"critical-threshold" = 80;
format = "<span foreground='#83a598'></span> {temperatureC}°C";
interval = 1;
};
"hyprland/workspaces" = {
format = "{icon}";
"active-only" = false;
"sort-by-number" = true;
"on-click" = "activate";
"all-outputs" = false;
"format-icons" = {
"1" = "1";
"2" = "2";
"3" = "3";
"4" = "4";
"5" = "5";
"6" = "6";
"7" = "7";
"8" = "8";
"9" = "9";
"10" = "10";
};
};
network = {
format = "󰤭 Off";
"format-wifi" = "{essid} ({signalStrength}%)";
"format-ethernet" = "<span foreground='#b48ead'>󰈀</span>";
"format-disconnected" = "󰤭 Disconnected";
"tooltip-format" = "{ifname} via {gwaddr} ";
"tooltip-format-wifi" = "{essid}({signalStrength}%) ";
"tooltip-format-ethernet" = "󰈀 {ifname}";
"tooltip-format-disconnected" = "Disconnected";
};
pulseaudio = {
format = "<span foreground='#cc241d'>{icon}</span> {volume}% {format_source}";
"format-bluetooth" = "<span foreground='#b16286'>{icon}</span> {volume}% {format_source}";
"format-bluetooth-muted" = "<span foreground='#D699B6'>󰖁</span> {format_source}";
"format-muted" = "<span foreground='#7A8478'>󰖁</span> {format_source}";
"format-source" = "<span foreground='#E67E80'></span> {volume}%";
"format-source-muted" = "<span foreground='#F38BA8'></span>";
"format-icons" = {
headphone = "";
phone = "";
portable = "";
default = [
""
""
""
];
};
"on-click-left" = "pavucontrol";
input = true;
};
"custom/playerctl" = {
format = "{icon} <span>{}</span>";
"return-type" = "json";
"max-length" = 333;
exec = "playerctl -a metadata --format '{\"text\": \"{{artist}} ~ {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F";
"on-click-middle" = "playerctl play-pause";
"on-click" = "playerctl previous";
"on-click-right" = "playerctl next";
"format-icons" = {
Playing = "<span foreground='#98BB6C'></span>";
Paused = "<span foreground='#E46876'></span>";
};
};
tray = {
format = "<span foreground='#D3C6AA'>{icon}</span>";
"icon-size" = 14;
spacing = 5;
};
idle_inhibitor = {
format = "{icon}";
"format-icons" = {
activated = "󱠛";
deactivated = "󱤱";
};
};
"custom/subs" = {
format = "<span foreground='#fbf1c7'>󰗃 </span> {}";
exec = "/usr/local/bin/subsfile.sh";
"on-click" = "vivaldi-stable https://youtube.com/thelinuxcast";
"restart-interval" = 1;
};
"custom/spacer" = {
format = " ";
};
"wlr/taskbar" = {
format = "{name}";
"icon-size" = 14;
"icon-theme" = "Numix-Circle";
"tooltip-format" = "{title}";
"on-click" = "activate";
"on-click-middle" = "close";
"ignore-list" = ["Alacritty"];
"app_ids-mapping" = {
firefoxdeveloperedition = "firefox-developer-edition";
};
rewrite = {
"Firefox Web Browser" = "Firefox";
"Foot Server" = "Terminal";
};
};
bluetooth = {
"on-click" = "./scripts/bluetooth-control";
"on-click-right" = "./scripts/rofi-bluetooth";
"on-click-middle" = "./scripts/rofi-bluetooth";
format = "{icon}";
interval = 15;
"format-icons" = {
on = "<span foreground='#43242B'></span>";
off = "<span foreground='#76946A'>󰂲</span>";
disabled = "󰂲";
connected = "";
};
"tooltip-format" = "{device_alias} {status}";
};
};
};
style = ''
@define-color bg #${config.stylix.base16Scheme.base00};
@define-color fg #${config.stylix.base16Scheme.base05};
@define-color lbg #${config.stylix.base16Scheme.base01};
@define-color yellow #${config.stylix.base16Scheme.base0A};
@define-color lavender #${config.stylix.base16Scheme.base0E};
@define-color peach #${config.stylix.base16Scheme.base0A};
@define-color red #${config.stylix.base16Scheme.base08};
@define-color green #${config.stylix.base16Scheme.base0B};
@define-color blue #${config.stylix.base16Scheme.base0D};
@define-color border #${config.stylix.base16Scheme.base02};
* {
min-height: 0;
margin: 0px 0px 0px 0px;
padding: 0;
border-radius: 7px;
font-family: "JetBrains Mono Nerd Font";
font-size: 10pt;
font-weight: 700;
padding-bottom: 0px;
}
tooltip {
background: @bg;
border-radius: 7px;
border: 2px solid @border;
}
#window {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 7px;
border-radius: 3px;
border-color: @lbg;
background-color: @yellow;
color: @bg;
}
window#waybar.empty #window {
background-color: @bg;
border-bottom: none;
border-right: none;
}
window#waybar {
background-color: @bg;
color: @lavender;
}
/* Workspaces */
@keyframes button_activate {
from { opacity: .3 }
to { opacity: 1.; }
}
#workspaces {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding: 1px;
background-color: @bg;
color: @bg;
}
#workspaces button {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding-left: 3px;
padding-right: 9px;
background-color: @bg;
color: @fg;
}
#workspaces button.active {
background-color:@blue;
color: @bg;
}
#workspaces button.urgent {
color: #F38BA8;
}
#workspaces button:hover {
border: solid transparent;
}
#custom-gpu-util {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 7px;
background-color: @bg;
color: @fg;
}
#tray {
margin: 0px 0px 0px 0px;
border-radius: 3px;
padding-left: 10px;
padding-right: 10px;
background-color: @bg;
color: @fg;
}
#idle_inhibitor {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 12px;
border-radius: 3px;
background-color: @bg;
color: @fg;
}
#network {
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 12px;
border-radius: 7px;
background-color: @bg;
color: @lavender;
}
#network.linked {
color: @peach;
}
#network.disconnected,
#network.disabled {
color: @red;
}
#custom-subs {
color: @fg;
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 12px;
border-radius: 3px;
border-bottom: 2px solid @bg;
border-right: 2px solid @bg;
border-color: @lbg;
background-color: @red;
}
#custom-spacer {
background-color: @yellow;
}
#custom-cliphist {
color: @peach;
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 12px;
border-radius: 3px;
background-color: @bg;
}
#custom-gpu-temp,
#cpu,
#memory,
#custom-clipboard,
#temperature {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
color: @fg;
background-color: @bg;
}
#custom-playerctl {
margin: 5px 5px 2px 5px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
color: @fg;
background-color: @bg;
}
#battery,
#backlight,
#bluetooth,
#pulseaudio {
margin-top: 5px;
margin-bottom: 2px;
color: @fg;
background-color: @bg;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
#battery,
#bluetooth {
margin-left: 0px;
margin-right: 5px;
padding-left: 7.5px;
padding-right: 10px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
#backlight,
#pulseaudio {
margin-right: 0px;
margin-left: 5px;
padding-left: 10px;
padding-right: 7.5px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
#clock {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
color: @bg;
background-color: @green;
}
#taskbar {
border-radius: 0px 0px 0px 0;
padding: 0 3px;
margin: 0 0px;
color: #ffffff;
background-color: rgba(120,118,117,0.3);
}
#taskbar button {
border-radius: 0px 0px 0px 0px;
padding: 0 0 0 3px;
margin: 3px 1;
color: #ffffff;
background-color: rgba(120,118,117,0.1);
}
#taskbar button.active {
background-color: rgba(120,118,117,0.8);
}
#mode {
margin: 0px 0px 0px 0px;
padding-left: 10px;
padding-right: 10px;
border-radius: 3px;
background-color: @bg;
color: @peach;
}
'';
};
}

Some files were not shown because too many files have changed in this diff Show More