diff --git a/flake.lock b/flake.lock index 365867f..3203282 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1778857089, - "narHash": "sha256-TclWRW2SdFeETLaiTG4BA8C8C4m/LppQEldncqyTzAQ=", + "lastModified": 1780756231, + "narHash": "sha256-tXQxKdG5716uB9/LIkLQqQwHKf5mRSpHoZhz3lyI2Cg=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "ab2b0af63fbc9fb779d684f19149b790978be8a8", + "rev": "6ecde03f47172753fe5a2f334f9d3facfb7e6784", "type": "github" }, "original": { @@ -38,11 +38,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1780174698, - "narHash": "sha256-fYHv6Z03ysxIe8saRNYHWi7njWcT7AfPNGNEm5JJIQQ=", + "lastModified": 1781031430, + "narHash": "sha256-AcJTjMpnffSJ6bpTDEaGcJ/31rOOYDgGr/2L2yH7H0Y=", "owner": "anotherhadi", "repo": "awesome-wallpapers", - "rev": "6edc4aeb12d517e3aaad239e579c89b080f07dab", + "rev": "0147e19341039fd3b01d36c3cbaa9571105fb777", "type": "github" }, "original": { @@ -221,11 +221,11 @@ ] }, "locked": { - "lastModified": 1780375472, - "narHash": "sha256-Q8RAJoYlakA6B2I5DVcuxzNbhCNU1nnIjqQZYP1KGrM=", + "lastModified": 1782104807, + "narHash": "sha256-/7jbIblpgaeNuVlAqhJr8vA7Y9DGKb+o2xeLqU5BK70=", "owner": "caelestia-dots", "repo": "cli", - "rev": "d1c8c8fc09738d1b40576e97c274b4a11a2e0ac7", + "rev": "3c537b90e120f1b4a3e0985239fbcd5de07a3d9f", "type": "github" }, "original": { @@ -245,11 +245,11 @@ ] }, "locked": { - "lastModified": 1779768519, - "narHash": "sha256-2n/447oNfAZrl1yncafLPgXMx5tuTF6T2B+zI/zFYkI=", + "lastModified": 1781930126, + "narHash": "sha256-AopjjM6497f3Usb6IAZgensjtzGlYGGpJLw7DRtP67I=", "owner": "caelestia-dots", "repo": "cli", - "rev": "64a5507e74f6c7d0c29f9131964412f8f8c4dd89", + "rev": "b00dabaa9351d1383dfba162f5b3575b49a126e1", "type": "github" }, "original": { @@ -263,6 +263,7 @@ "caelestia-cli": [ "caelestia-cli" ], + "m3shapes": "m3shapes", "nixpkgs": [ "caelestia-cli", "nixpkgs" @@ -270,11 +271,11 @@ "quickshell": "quickshell" }, "locked": { - "lastModified": 1780196414, - "narHash": "sha256-iXmyWULTZuRd68xRL79e9GyYL9FZ6gfh6zl1PPlWX2A=", + "lastModified": 1782048179, + "narHash": "sha256-8RSk3Jr5Ud+zJKinu4400dz7J0wWBIuqZ2Ulst7IPuI=", "owner": "caelestia-dots", "repo": "shell", - "rev": "63bb82762bb29ac9b7fcd5b97839abae721ce860", + "rev": "ddcfd10661e02b53705c0264e982debac04e215e", "type": "github" }, "original": { @@ -286,17 +287,18 @@ "caelestia-shell_2": { "inputs": { "caelestia-cli": "caelestia-cli_2", + "m3shapes": "m3shapes_2", "nixpkgs": [ "nixpkgs" ], "quickshell": "quickshell_2" }, "locked": { - "lastModified": 1780196414, - "narHash": "sha256-iXmyWULTZuRd68xRL79e9GyYL9FZ6gfh6zl1PPlWX2A=", + "lastModified": 1782048179, + "narHash": "sha256-8RSk3Jr5Ud+zJKinu4400dz7J0wWBIuqZ2Ulst7IPuI=", "owner": "caelestia-dots", "repo": "shell", - "rev": "63bb82762bb29ac9b7fcd5b97839abae721ce860", + "rev": "ddcfd10661e02b53705c0264e982debac04e215e", "type": "github" }, "original": { @@ -307,11 +309,11 @@ }, "crane": { "locked": { - "lastModified": 1779130139, - "narHash": "sha256-BLrtr42azquO7MdGFU5a7KiMl3YpFlTeIXqy1fT5GlQ=", + "lastModified": 1780532242, + "narHash": "sha256-D+BsdpxmtUwtqGoY0IXPhHgTlmqgcZKCEo1oMyn7ep0=", "owner": "ipetkov", "repo": "crane", - "rev": "edb38893982a3338972bb4a2ec7ce7c29ba10fd9", + "rev": "59a82a1222dd3b2080b5cc52a1a2e8d5f1b77f37", "type": "github" }, "original": { @@ -543,11 +545,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1780054154, - "narHash": "sha256-VbHwck8XGyZ77uHfY9adqE0qrilRshWUdFwB6etEIt4=", + "lastModified": 1781783441, + "narHash": "sha256-v7rAVyX0DGAYqei3FxWPDJLqrzJrEsue2DVBEDApxQo=", "owner": "oxcl", "repo": "nix-flake-helium-browser", - "rev": "47e435ce0b81c012683bd2b1a4101285e1f46183", + "rev": "aabc12cf6518480d83b2b5d06d2eecf86a25273f", "type": "github" }, "original": { @@ -563,11 +565,11 @@ ] }, "locked": { - "lastModified": 1780593650, - "narHash": "sha256-CHo7k65YTL3HY+WQVedDTupji+LMgNlKCdrtRHZFAK4=", + "lastModified": 1782103446, + "narHash": "sha256-+vMR3KPBVoY9nJrQI9qje5H1vmv51dJgMYkUuYimtJg=", "owner": "nix-community", "repo": "home-manager", - "rev": "447fd9ff62501dae7206dfe180ee89f8de27b7d5", + "rev": "d8dac1f668fd861369571be3678ec75b1573e7e3", "type": "github" }, "original": { @@ -651,11 +653,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1780589398, - "narHash": "sha256-TTSRAf2EIP6Wy3aiaXhfj2qDtCuO/hN7PWVEEufNSiU=", + "lastModified": 1782070887, + "narHash": "sha256-AZvkraDtbqlrWbmmUk+pL2OL7G/L3WEV/Y65ZkAJZNo=", "ref": "refs/heads/main", - "rev": "7c721d5c012752fd8719d66ef59d290845d6638e", - "revCount": 7417, + "rev": "5a7078d20a14bb199ef9bb81faa4faeaf5e92117", + "revCount": 7490, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -830,11 +832,11 @@ ] }, "locked": { - "lastModified": 1779475241, - "narHash": "sha256-Nw4DN0A5krWNcPBvuWe5Gz2yuxsUUPiDgtu6SVPJQeU=", + "lastModified": 1780251518, + "narHash": "sha256-fG9xbb1SOAAJ+2kJRakp3ch+BmA/3dEg/K3PoAZTKkw=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "3cd3972b2ee658a14d2610d8494e09259e530124", + "rev": "40ede2e7bdec80ba5d4c443160d905e9f841ae5f", "type": "github" }, "original": { @@ -962,40 +964,52 @@ "type": "github" } }, - "mnw": { + "m3shapes": { + "flake": false, "locked": { - "lastModified": 1778541201, - "narHash": "sha256-n0twkzWexzjsoDycOTvvQNuGEdg62UiNHYcFCduYpKI=", - "owner": "Gerg-L", - "repo": "mnw", - "rev": "1a3573fc9d2486738fe0b2cacc5cd10dd5f3a445", + "lastModified": 1781017666, + "narHash": "sha256-kfHyzZaPHgqZML48OA+5JwBOsLdQJ2ci/aGPShvUB4Y=", + "owner": "soramanew", + "repo": "m3shapes", + "rev": "bdc327b29f95394a732baf3c9b19658ba23755b6", "type": "github" }, "original": { - "owner": "Gerg-L", - "repo": "mnw", + "owner": "soramanew", + "repo": "m3shapes", + "rev": "bdc327b29f95394a732baf3c9b19658ba23755b6", "type": "github" } }, - "ndg": { - "inputs": { - "nixpkgs": [ - "nvf", - "nixpkgs" - ] - }, + "m3shapes_2": { + "flake": false, "locked": { - "lastModified": 1779233504, - "narHash": "sha256-YIKEyzh0NFQlD0O92LQQNMoVCDwV8yw1Xz0Iu+4ZC5U=", - "owner": "feel-co", - "repo": "ndg", - "rev": "86f6644411a64d5413711895b7cf6e0e1be465b6", + "lastModified": 1781017666, + "narHash": "sha256-kfHyzZaPHgqZML48OA+5JwBOsLdQJ2ci/aGPShvUB4Y=", + "owner": "soramanew", + "repo": "m3shapes", + "rev": "bdc327b29f95394a732baf3c9b19658ba23755b6", "type": "github" }, "original": { - "owner": "feel-co", - "ref": "refs/tags/v2.8.0", - "repo": "ndg", + "owner": "soramanew", + "repo": "m3shapes", + "rev": "bdc327b29f95394a732baf3c9b19658ba23755b6", + "type": "github" + } + }, + "mnw": { + "locked": { + "lastModified": 1780772958, + "narHash": "sha256-VKKe8r4pwCGWZ3Yr9CPN129R4S3CKLSrlYqdYz3vKpM=", + "owner": "Gerg-L", + "repo": "mnw", + "rev": "0871dbf63a53610c95db04439ed8ea4d6ec9c160", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "mnw", "type": "github" } }, @@ -1006,11 +1020,11 @@ ] }, "locked": { - "lastModified": 1780210899, - "narHash": "sha256-4axz3OBPTKa6LIkXV8n0lc63MQU+et2CB5DGobEAi6k=", + "lastModified": 1782030356, + "narHash": "sha256-h4WpMr455AfRub0FXBaon6Vcpe0waUyJ4GivIW6oyd4=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "97df9dc0b7c924344b793a15c1e8e4522ebb854e", + "rev": "3017088b49efd404f78e3b104f553b97e4af786b", "type": "github" }, "original": { @@ -1027,11 +1041,11 @@ "website-builder": "website-builder" }, "locked": { - "lastModified": 1780503763, - "narHash": "sha256-e2PD1oowOjebEAaWsiQ9g0FQA9OYaUWj7vLwUvDE6EM=", + "lastModified": 1781774207, + "narHash": "sha256-pUHOn5uRbY1yOdeBgfm/UpkVkN9YrLUxl7jZnN1emyo=", "owner": "rasmus-kirk", "repo": "nixarr", - "rev": "6c1eb23334e06bd3fd8d3d8782c64e5c3ac13097", + "rev": "67952a6e79a298396e909d35f7ee35b23f754c43", "type": "github" }, "original": { @@ -1045,11 +1059,11 @@ "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1780310866, - "narHash": "sha256-fPBRVf6A5xlACYcOI59shGrjURuvwu0lRsDoSCEXt/I=", + "lastModified": 1781622756, + "narHash": "sha256-JrPh4M6S7aPsEE9tOENuZrxC6o2szSLlK+t4+nLke9s=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "4ed851c979641e28597a05086332d75cdc9e395f", + "rev": "08018c72174a4df5657f8d94178ac69fb9c243e5", "type": "github" }, "original": { @@ -1122,11 +1136,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1779796641, - "narHash": "sha256-ZsIrKmhp4vbBXoXXmR/tBXA/UCsAQiJL9vsgZEduhVY=", + "lastModified": 1781509190, + "narHash": "sha256-uJZs9Di8I6ciTp6jiojj0HzlNpBkud8ax5aT/O5aJkw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "25f538306313eae3927264466c70d7001dcea1df", + "rev": "d6df3513510aa548c83868fd22bfddd0a8c0a0d4", "type": "github" }, "original": { @@ -1138,11 +1152,11 @@ }, "nixpkgs_10": { "locked": { - "lastModified": 1778869304, - "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "lastModified": 1780749050, + "narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "rev": "a799d3e3886da994fa307f817a6bc705ae538eeb", "type": "github" }, "original": { @@ -1170,16 +1184,16 @@ }, "nixpkgs_12": { "locked": { - "lastModified": 1778869304, - "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "lastModified": 1781216227, + "narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", + "ref": "nixos-26.05", "repo": "nixpkgs", "type": "github" } @@ -1266,11 +1280,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1779357205, - "narHash": "sha256-cCO8aTqss5x9Ky8GWkpY0Hy5fyTZEbtifSUV8QjSzic=", + "lastModified": 1780749050, + "narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f83fc3c307e74bc5fd5adb7eb6b8b13ffd2a36e1", + "rev": "a799d3e3886da994fa307f817a6bc705ae538eeb", "type": "github" }, "original": { @@ -1327,11 +1341,11 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1780243769, - "narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=", + "lastModified": 1781577229, + "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "331800de5053fcebacf6813adb5db9c9dca22a0c", + "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f", "type": "github" }, "original": { @@ -1348,11 +1362,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1780583973, - "narHash": "sha256-ZZk1ccebBjK3pzHVsDU4+fvX/c1fePZ3Tic96/OkfpA=", + "lastModified": 1781718334, + "narHash": "sha256-Ova9OQemsGRmg2b22W9HQSRhtjwS1C9mLUtkYqEjyRs=", "owner": "NotAShelf", "repo": "tuigreet", - "rev": "dc41006d4a4366f732a1a75a20b989fc1e42c0a6", + "rev": "a75f469d51a11b35f9766153d35d15c535b268a6", "type": "github" }, "original": { @@ -1430,16 +1444,15 @@ "flake-compat": "flake-compat_2", "flake-parts": "flake-parts_4", "mnw": "mnw", - "ndg": "ndg", "nixpkgs": "nixpkgs_12", "systems": "systems_5" }, "locked": { - "lastModified": 1780511420, - "narHash": "sha256-Ib44d47GTijSfCtcxFDliP3C9uUiLDYaAE/nVH8TQoY=", + "lastModified": 1781997110, + "narHash": "sha256-6D6xtYN5t1kZGNd69eMZsRBkgX5Df1roErn/kFR1C+A=", "owner": "notashelf", "repo": "nvf", - "rev": "29f7eb8491d9833ee55006ab11169130a60c2652", + "rev": "320f60b97075a58d38b90fc5e39f478421dbd38a", "type": "github" }, "original": { @@ -1480,11 +1493,11 @@ ] }, "locked": { - "lastModified": 1779430452, - "narHash": "sha256-zTslhsxLqUlRTML506iougTGzyR38Fzhzn7t4KDEuuE=", + "lastModified": 1781847791, + "narHash": "sha256-Mo2YtNEGlcySnbq0YuP3nUKMAQCMAfE+TcCffo5vzD8=", "ref": "refs/heads/master", - "rev": "4b4fca3224ab977dc515ac0bb78d00b3dfa71e00", - "revCount": 819, + "rev": "68c2c85c33845385f7ab8147b32f1450b1e468e0", + "revCount": 824, "type": "git", "url": "https://git.outfoxxed.me/outfoxxed/quickshell" }, @@ -1501,11 +1514,11 @@ ] }, "locked": { - "lastModified": 1779430452, - "narHash": "sha256-zTslhsxLqUlRTML506iougTGzyR38Fzhzn7t4KDEuuE=", + "lastModified": 1781847791, + "narHash": "sha256-Mo2YtNEGlcySnbq0YuP3nUKMAQCMAfE+TcCffo5vzD8=", "ref": "refs/heads/master", - "rev": "4b4fca3224ab977dc515ac0bb78d00b3dfa71e00", - "revCount": 819, + "rev": "68c2c85c33845385f7ab8147b32f1450b1e468e0", + "revCount": 824, "type": "git", "url": "https://git.outfoxxed.me/outfoxxed/quickshell" }, @@ -1545,11 +1558,11 @@ ] }, "locked": { - "lastModified": 1778555852, - "narHash": "sha256-55EmwooVAS4UpA0oWd5wilKPRqCiHD5BAej9QiNwheY=", + "lastModified": 1780975129, + "narHash": "sha256-428T1pLXnbVeUgZx2wWEkbvl3ZORjras34ANZ3ACp5A=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f29b0f7a9f367e0056b716f8aa137cb41e784444", + "rev": "fe64e6b409dc513274d2941f8da13bbd0fdcf44e", "type": "github" }, "original": { @@ -1563,11 +1576,11 @@ "nixpkgs": "nixpkgs_13" }, "locked": { - "lastModified": 1780547341, - "narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=", + "lastModified": 1781943681, + "narHash": "sha256-NFHmA7H47adqiyp+0iEOyZOQhmigDqA/NBAlf4imB6U=", "owner": "Mic92", "repo": "sops-nix", - "rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a", + "rev": "420f8d2e9882911f65cfac15cc706f639ba96cca", "type": "github" }, "original": { @@ -1594,11 +1607,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1780584783, - "narHash": "sha256-b4o1AlQpGgpUfieaNz/3gsSzogjoiczmnlbDj0khImY=", + "lastModified": 1781997134, + "narHash": "sha256-muBZG4O/agq/ljgHr6c3AsobIWgODAS6vf50xIS7o+Q=", "owner": "danth", "repo": "stylix", - "rev": "6b6b874d082928aa9557e21516d4fe2f2bb305e1", + "rev": "a6a493119e492e15874caf6f7f8c7e572e64c655", "type": "github" }, "original": { @@ -1912,11 +1925,11 @@ ] }, "locked": { - "lastModified": 1778265244, - "narHash": "sha256-8jlPtGSsv/CQY6tVVyLF4Jjd0gnS+Zbn9yk/V13A9nM=", + "lastModified": 1780133819, + "narHash": "sha256-0YPKIY3dlnR7SPq7Z8ekFVvzFsfeiAtEj+QUI3KHrlI=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "813ea5ca9a1702a9a2d1f5836bc00172ef698968", + "rev": "4a170c0ba96fd37374f93d8f91c9ed91814828ac", "type": "github" }, "original": { diff --git a/home/programs/group/basic-apps.nix b/home/programs/group/basic-apps.nix index e9394fd..769cea0 100644 --- a/home/programs/group/basic-apps.nix +++ b/home/programs/group/basic-apps.nix @@ -17,7 +17,6 @@ onlyoffice-desktopeditors # Office suite blanket # Listen to different sounds signal-desktop # Messaging app - librewolf # Backup browser # I love TUIs caligula # User-friendly, lightweight TUI for disk imaging (ISO, USB BOOT) diff --git a/home/rofi/default.nix b/home/rofi/default.nix new file mode 100644 index 0000000..de65905 --- /dev/null +++ b/home/rofi/default.nix @@ -0,0 +1,186 @@ +{ config, pkgs, ... }: let + c = config.lib.stylix.colors; + font = config.stylix.fonts.sansSerif.name; + theme = pkgs.writeText "launcher.rasi" '' + configuration { + modi: "drun,run,window"; + case-sensitive: false; + cycle: true; + normalize-match: true; + show-icons: true; + matching: "normal"; + tokenize: true; + kb-cancel: "Escape,MousePrimary"; + drun-match-fields: "name,exec,generic,comment"; + drun-display-format: "{name} \n[{comment}]"; + drun-url-launcher: "xdg-open"; + drun-show-actions: false; + disable-history: false; + sorting-method: "normal"; + terminal: "ghostty"; + hover-select: true; + me-select-entry: ""; + me-accept-entry: [ "MousePrimary" ]; + timeout { + action: "kb-cancel"; + delay: 0; + } + } + + * { + background: #${c.base00}e5; + background-alt: #${c.base01}ff; + background-sec: #${c.base03}ff; + foreground: #${c.base05}ff; + selected: #${c.base05}ff; + active: #${c.base0B}ff; + urgent: #${c.base08}ff; + highlight: #${c.base03}28; + font: "${font}, bold 12"; + } + + window { + transparency: "real"; + location: west; + anchor: west; + padding: 0; + margin: 5px; + border-radius: 15px; + width: 450px; + height: 100%; + background-color: @background; + } + + mainbox { + border-radius: 0; + margin: 0; + spacing: 10px; + padding: 10px; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; + } + + inputbar { + spacing: 10px; + margin: 0px; + padding: 10px 15px; + border-radius: 16px; + background-color: @background-alt; + color: @foreground; + children: [ "entry" ]; + } + + entry { + background-color: inherit; + color: inherit; + placeholder-color: inherit; + placeholder: "Search..."; + } + + listview { + columns: 1; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + spacing: 5px; + margin: 0px; + padding: 10px 8px; + border-radius: 16px; + background-color: @background-alt; + color: @foreground; + } + + element { + enabled: true; + spacing: 8px; + margin: 0px; + padding: 3px 10px; + border-radius: 16px; + background-color: transparent; + color: @foreground; + cursor: pointer; + } + + element selected.normal { + background-color: @highlight; + } + + element-icon { + background-color: transparent; + size: 26px; + margin: 0 5px 0 0; + color: inherit; + cursor: inherit; + } + + element-text { + background-color: transparent; + color: inherit; + cursor: inherit; + padding: 10px 0; + vertical-align: 0.5; + } + + mode-switcher { + enabled: true; + spacing: 8px; + margin: 0px; + border-radius: 16px; + padding: 8px 18px; + background-color: @background-alt; + color: @foreground; + } + + button { + padding: 10px; + margin: 0; + border: 0px solid; + border-radius: 16px; + background-color: @highlight; + color: inherit; + cursor: pointer; + } + + button selected { + background-color: @foreground; + color: @background; + } + + message { + enabled: true; + margin: 0px; + padding: 0px; + border-radius: 0px; + background-color: transparent; + color: @foreground; + } + + textbox { + padding: 8px; + border-radius: 4px; + background-color: @background-alt; + color: @foreground; + placeholder-color: @foreground; + vertical-align: 0.5; + blink: true; + markup: true; + } + + error-message { + padding: 10px; + border-radius: 0px; + background-color: @background; + color: @foreground; + } + ''; +in { + stylix.targets.rofi.enable = false; + + programs.rofi = { + enable = true; + theme = "${theme}"; + }; +} diff --git a/home/swaync/default.nix b/home/swaync/default.nix new file mode 100644 index 0000000..883100c --- /dev/null +++ b/home/swaync/default.nix @@ -0,0 +1,331 @@ +{ config, ... }: let + c = config.lib.stylix.colors; + font = config.stylix.fonts.sansSerif.name; +in { + services.swaync = { + enable = true; + + settings = { + positionX = "right"; + positionY = "top"; + cssPriority = "user"; + "control-center-width" = 450; + "fit-to-screen" = true; + "notification-window-width" = 400; + "notification-icon-size" = 40; + "notification-body-image-height" = 500; + "notification-body-image-width" = 500; + "notification-inline-replies" = true; + "notification-2fa-action" = false; + timeout = 3; + "timeout-low" = 2; + "timeout-critical" = 6; + "keyboard-shortcuts" = true; + "image-visibility" = "when-available"; + "transition-time" = 200; + "hide-on-clear" = false; + "hide-on-action" = false; + "script-fail-notify" = true; + widgets = [ "mpris" "dnd" "buttons-grid" "notifications" ]; + "widget-config" = { + dnd.text = "Do not disturb"; + mpris = { + "image-size" = 100; + "image-radius" = 10; + autohide = false; + blacklist = [ "org.mpris.MediaPlayer2.playerctld" ]; + }; + "buttons-grid" = { + actions = [ + { + label = "󰌪"; + type = "toggle"; + command = "powerprofilesctl set power-saver"; + "update-command" = "powerprofilesctl get | grep -q power-saver && echo true || echo false"; + } + { + label = ""; + type = "toggle"; + command = "wpctl set-mute @DEFAULT_SOURCE@ toggle"; + "update-command" = "wpctl get-volume @DEFAULT_SOURCE@ | grep -q MUTED && echo true || echo false"; + } + { + label = ""; + command = "ghostty -- htop ; swaync-client -cp"; + } + { + label = ""; + command = "nwg-look ; swaync-client -cp"; + } + { + label = ""; + command = "swaync-client -cp ; hyprlock"; + } + { + label = ""; + command = "swaync-client -cp ; systemctl poweroff"; + } + ]; + }; + }; + }; + + style = '' + @define-color center-bg #${c.base00}cc; + @define-color notification-bg #${c.base00}e5; + @define-color center-notification-bg #${c.base01}; + @define-color background #${c.base00}e5; + @define-color background-alt #${c.base01}; + @define-color text #${c.base05}; + @define-color text-alt #${c.base03}; + @define-color selected #${c.base03}66; + @define-color hover #${c.base03}28; + @define-color urgent #${c.base08}; + + * { + font-family: "${font}"; + font-weight: 700; + all: unset; + --border-radius: 16px; + --border-radius-s: 8px; + --border-radius-xl: 18px; + --shadow: 2px 4px 10px rgba(0,0,0,0.15); + } + + .notification { padding: 5px; } + + .notification-background { + background: @notification-bg; + border-radius: var(--border-radius); + margin: 8px; + padding: 0; + } + + .notification-background .close-button { + margin: 6px; + padding: 2px; + border-radius: 6px; + background: transparent; + color: @text; + } + + .notification-background .close-button:hover { background: @hover; } + + .notification.critical { + border: 2px solid @urgent; + border-radius: var(--border-radius); + } + + .notification-content { + color: @text; + margin: 10px; + font-weight: 700; + } + + .notification-content .text-box { margin: 0 0 0 15px; } + + .notification-content .time { + padding: 2px; + font-size: 0.95rem; + font-weight: 800; + } + + .notification-content .summary { + font-size: 1rem; + font-weight: 800; + padding: 2px 0; + margin-bottom: 2px; + } + + .notification-content .body { + color: @text-alt; + font-size: 0.8rem; + } + + .notification-row .inline-reply-entry, + .notification-row .inline-reply-button { + margin: 5px -5px -5px -5px; + padding: 10px 15px; + border-radius: var(--border-radius); + background: @background-alt; + } + + .notification-row .inline-reply-entry { margin-right: 10px; } + .notification-row .inline-reply-button:hover { background: @selected; } + + .notification-alt-actions { padding: 5px 0; } + + .notification-action { + font-weight: 700; + border-radius: var(--border-radius); + background: @hover; + color: @text; + margin: 0 5px; + padding: 10px 0; + } + + .notification-action:hover, + .notification-action:active { background: @selected; } + + .control-center { + background: @center-bg; + border-radius: var(--border-radius); + margin: 5px; + padding: 5px 5px 0 5px; + } + + .control-center .notification-background { + background: @center-notification-bg; + box-shadow: var(--shadow); + } + + .control-center .notification-background .close-button, + .notification-group-close-button { opacity: 0; } + + .notification-group { transition: 200ms; } + + .notification-group:not(.collapsed) { margin: 8px; } + + .notification-group-headers, + .notification-group-buttons { + color: @text; + font-weight: bold; + background: @background; + border-radius: var(--border-radius); + padding: 4px 8px; + } + + .notification-group-headers > label { + margin: 0 3px; + font-size: 1rem; + } + + .notification-group-icon { color: @text; } + + .notification-group-buttons .image-button { + background: transparent; + color: @text; + padding: 4px; + border-radius: var(--border-radius); + } + + .notification-group-buttons .image-button:hover { background: @hover; } + + .widget { + margin: 5px; + color: @text; + } + + .widget-mpris-album-art { + border-radius: var(--border-radius); + margin: 6px 4px; + } + + .widget-mpris-title { + font-weight: 700; + font-size: 1.2rem; + margin: 0 3px; + } + + .widget-mpris-subtitle { + color: @text-alt; + font-weight: 700; + font-size: 0.9rem; + margin: 0 3px; + } + + .mpris-background { border-radius: 14px; margin: 3px; } + + .widget-mpris { + border-radius: var(--border-radius); + box-shadow: var(--shadow); + } + + .mpris-overlay { + border-radius: var(--border-radius); + padding: 10px; + background: @background; + } + + .mpris-overlay > box:last-child { + border-radius: var(--border-radius-xl); + padding: 0 5px; + background: alpha(@hover, .6); + } + + .widget-mpris-player button { + padding: 5px; + margin: 0 2.5px; + } + + .widget-mpris-player button:hover { + border-radius: var(--border-radius-s); + background: @hover; + } + + .widget-dnd { + padding: 10px 15px; + border-radius: var(--border-radius); + background: @background-alt; + box-shadow: var(--shadow); + color: @text; + } + + .widget-dnd > label { + font-size: 1rem; + font-weight: 700; + } + + .widget-dnd switch { + background: @hover; + border-radius: var(--border-radius-s); + box-shadow: none; + padding: 2px; + transition: 200ms; + } + + .widget-dnd switch slider { + background: @text; + border-radius: var(--border-radius-s); + } + + .widget-dnd switch:hover, + .widget-dnd switch:checked { background-color: @selected; } + + .widget-notifications { margin: 0; } + + .widget-buttons-grid { + border-radius: var(--border-radius); + padding: 5px 15px; + margin-bottom: 5px; + background: @background-alt; + box-shadow: var(--shadow); + } + + .widget-buttons-grid button { + padding: 10px; + margin: 3px; + min-width: 2rem; + background: @hover; + border-radius: var(--border-radius); + transition: 200ms; + } + + .widget-buttons-grid button > label { + font-family: "Maple Mono NF"; + font-size: 16px; + color: @text; + } + + .widget-buttons-grid button:hover { background: @selected; } + + .widget-buttons-grid button:checked { background-color: @text; } + + .widget-buttons-grid button:checked > label { color: @background; } + + .control-center-list-placeholder { color: @text; } + + .blank-window { background: transparent; } + ''; + }; +} diff --git a/home/system/hyprland/bindings.nix b/home/system/hyprland/bindings.nix index 2da3577..9a88359 100644 --- a/home/system/hyprland/bindings.nix +++ b/home/system/hyprland/bindings.nix @@ -91,14 +91,13 @@ in { "$mod,B, exec, uwsm app -- ${config.programs.helium.package}/bin/helium" # Browser # Power - "$mod, X, global, caelestia:session" # Powermenu ( - "$shiftMod, X, exec, " + "$mod, X, exec, " + lib.getExe (mkMenu [ { key = "l"; desc = "Lock"; - cmd = "hyprctl dispatch global caelestia:lock"; + cmd = "hyprlock"; } { key = "s"; @@ -120,21 +119,14 @@ in { desc = "Nightshift"; cmd = "nightshift-toggle"; } - { - key = "c"; - desc = "Restart caelestia"; - cmd = "hyprctl dispatch exec 'caelestia-shell kill | sleep 1 | caelestia-shell'"; - } ]) ) # Quick launch "$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal) "$mod,E, exec, uwsm app -- ${pkgs.thunar}/bin/thunar" # Thunar - "$shiftMod, E, exec, pkill fuzzel || caelestia emoji -p" # Emoji picker - "$mod, SPACE, global, caelestia:launcher" # Launcher - "$mod, N, exec, caelestia shell drawers toggle sidebar" # Sidebar (Notifications, quick actions) - "$mod, D, exec, caelestia shell drawers toggle dashboard" # Dashboard + "$mod, SPACE, exec, rofi -show drun" # Launcher + "$mod, N, exec, swaync-client -t" # Notification center # Windows "$mod,Q, killactive," # Close window @@ -152,10 +144,9 @@ in { "$shiftMod,L, focusmonitor, 1" # Focus next monitor # Utilities - "$shiftMod, SPACE, exec, caelestia shell gameMode toggle" # Toggle Focus/Game mode - "$shiftMod, S, global, caelestia:screenshotFreeze" # Capture region (freeze) - ", Print, global, caelestia:screenshotFreeze" # Capture region (freeze) - "$shiftMod+Alt, S, global, caelestia:screenshot" # Capture region + "$shiftMod, S, exec, hyprshot -m region" # Capture region + ", Print, exec, hyprshot -m region" # Capture region + "$shiftMod+Alt, S, exec, hyprshot -m output" # Capture screen ] ++ (builtins.concatLists ( builtins.genList ( @@ -176,32 +167,21 @@ in { bindl = [ # Brightness - ", XF86MonBrightnessUp, global, caelestia:brightnessUp" - ", XF86MonBrightnessDown, global, caelestia:brightnessDown" + ", XF86MonBrightnessUp, exec, swayosd-client --brightness raise" + ", XF86MonBrightnessDown, exec, swayosd-client --brightness lower" # Media - ", XF86AudioPlay, global, caelestia:mediaToggle" - ", XF86AudioPause, global, caelestia:mediaToggle" - ", XF86AudioNext, global, caelestia:mediaNext" - ", XF86AudioPrev, global, caelestia:mediaPrev" - ", XF86AudioStop, global, caelestia:mediaStop" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioPause, exec, playerctl play-pause" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + ", XF86AudioStop, exec, playerctl stop" # Sound - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" - ", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" - ]; - - bindin = [ - # Launcher - "$mod, mouse:272, global, caelestia:launcherInterrupt" - "$mod, mouse:273, global, caelestia:launcherInterrupt" - "$mod, mouse:274, global, caelestia:launcherInterrupt" - "$mod, mouse:275, global, caelestia:launcherInterrupt" - "$mod, mouse:276, global, caelestia:launcherInterrupt" - "$mod, mouse:277, global, caelestia:launcherInterrupt" - "$mod, mouse_up, global, caelestia:launcherInterrupt" - "$mod, mouse_down, global, caelestia:launcherInterrupt" + ", XF86AudioMute, exec, swayosd-client --output-volume mute-toggle" + ", XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise" + ", XF86AudioLowerVolume, exec, swayosd-client --output-volume lower" + ", XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle" ]; }; } diff --git a/home/system/waybar/default.nix b/home/system/waybar/default.nix new file mode 100644 index 0000000..7b07323 --- /dev/null +++ b/home/system/waybar/default.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: { + imports = [ + ./settings.nix + ./style.nix + ]; + + programs.waybar.enable = true; + stylix.targets.waybar.enable = false; + + home.packages = with pkgs; [ + playerctl + pavucontrol + blueman + swayosd + ]; + + wayland.windowManager.hyprland.settings.exec-once = [ + "waybar" + "swayosd-server" + ]; +} diff --git a/home/system/waybar/settings.nix b/home/system/waybar/settings.nix new file mode 100644 index 0000000..2e6a9cb --- /dev/null +++ b/home/system/waybar/settings.nix @@ -0,0 +1,253 @@ +{ osConfig ? {}, lib, ... }: let + hasBluetooth = osConfig.hardware.bluetooth.enable or false; +in { + programs.waybar.settings = [ + { + layer = "top"; + position = "top"; + height = 25; + margin = "5 0"; + + modules-left = [ "group/left-hidden-top" "group/left" ]; + modules-center = [ "clock" ]; + modules-right = [ "group/right" "group/right-hidden-top" ]; + + # ── Groups ──────────────────────────────────────────────────────── + + "group/left" = { + orientation = "horizontal"; + modules = [ "hyprland/workspaces" "mpris" ]; + }; + + # power-profiles-daemon visible + hidden drawer (arrow → battery cpu load) + "group/left-hidden-top" = { + orientation = "horizontal"; + modules = [ "power-profiles-daemon" "group/left-hidden" ]; + }; + + "group/left-hidden" = { + orientation = "horizontal"; + drawer = { + transition-duration = 500; + transition-left-to-right = false; + click-to-reveal = true; + }; + modules = [ "custom/arrow-right" "battery" "cpu" "load" ]; + }; + + # bluetooth volume network tray (visible) + "group/right" = { + orientation = "horizontal"; + modules = lib.optional hasBluetooth "bluetooth" ++ [ "group/group-volume" "network" "tray" ]; + }; + + # hidden drawer (arrow ← memory temp) + ctlcenter visible + "group/right-hidden-top" = { + orientation = "horizontal"; + modules = [ "group/right-hidden" "custom/ctlcenter" ]; + }; + + "group/right-hidden" = { + orientation = "horizontal"; + drawer = { + transition-duration = 500; + transition-left-to-right = true; + click-to-reveal = true; + }; + modules = [ "custom/arrow-left" "memory" "temperature" ]; + }; + + "group/group-volume" = { + orientation = "horizontal"; + drawer = { + transition-duration = 600; + transition-left-to-right = true; + reveal-delay = 450; + }; + modules = [ "pulseaudio" "pulseaudio/slider" ]; + }; + + # ── Modules ───────────────────────────────────────────────────────── + + "hyprland/workspaces" = { + format = "{icon}"; + on-scroll-down = "hyprctl dispatch workspace e+1"; + on-scroll-up = "hyprctl dispatch workspace e-1"; + persistent-workspaces."*" = 5; + cursor = true; + format-icons = { + active = "󰮯"; + persistent = ""; + empty = ""; + }; + }; + + mpris = { + format = "{artist} - {title}"; + tooltip-format = "{album}"; + format-paused = " {artist} - {title}"; + on-click = "playerctl play-pause"; + on-scroll-up = "playerctl previous"; + on-scroll-down = "playerctl next"; + max-length = 45; + }; + + battery = { + interval = 20; + full-at = 100; + tooltip = true; + format-full = ""; + format = "{icon} {capacity}%"; + format-time = "{H}:{M:02}"; + format-charging = " {capacity}% ({time})"; + format-icons = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂂" "󰁹" ]; + states = { + warning = 30; + critical = 15; + }; + }; + + cpu = { + interval = 30; + format = " {usage}%"; + cursor = true; + states = { + warning = 80; + critical = 90; + }; + }; + + load = { + interval = 30; + format = " {load1}%"; + cursor = true; + }; + + "power-profiles-daemon" = { + format = "{icon}"; + tooltip-format = "Power profile: {profile}"; + format-icons = { + performance = ""; + balanced = ""; + power-saver = ""; + }; + }; + + memory = { + interval = 10; + format = " {used:0.1f}G/{total:0.1f}G"; + states = { + warning = 80; + critical = 90; + }; + }; + + temperature = { + interval = 10; + format = "{icon} {temperatureC}°"; + critical-threshold = 90; + format-icons = [ "" "" "" "" "" ]; + }; + + bluetooth = { + format = "{}"; + format-on = "󰂰"; + format-off = "󰂲"; + format-disabled = ""; + format-connected = "{device_alias}"; + format-connected-battery = "{device_alias}"; + tooltip-format = "{device_enumerate}"; + tooltip-format-enumerate-connected = "{device_alias}"; + tooltip-format-enumerate-connected-battery = "{device_alias} {device_battery_percentage}%"; + on-click-right = "blueman-manager &"; + }; + + pulseaudio = { + format = "{icon}"; + format-bluetooth = "{icon}"; + tooltip-format = "{volume}%"; + format-muted = "󰝟"; + scroll-step = 2; + on-click = "swayosd-client --output-volume mute-toggle"; + on-click-right = "pavucontrol -t 4 &"; + format-icons = { + headphone = ""; + hands-free = ""; + headset = ""; + phone = ""; + portable = ""; + car = ""; + default = [ + "󰕿" + "󰖀" + "󰕾" + ]; + }; + }; + + "pulseaudio/slider" = { + min = 0; + max = 100; + cursor = true; + }; + + network = { + interval = 10; + format-disabled = ""; + format-disconnected = ""; + format-wifi = ""; + format-ethernet = ""; + tooltip-format = "{essid} + +Frequency: {frequency}GHz +Strength: {signalStrength}% + +{bandwidthUpBytes} {bandwidthDownBytes}"; + on-click-right = "ghostty -e nmtui &"; + }; + + tray = { + icon-size = 13; + spacing = 12; + cursor = true; + }; + + clock = { + timezone = "Europe/Paris"; + tooltip-format = "{calendar}"; + format = "{:%H:%M}"; + format-alt = "{:%H:%M %d %B %Y}"; + calendar = { + mode = "year"; + weeks-pos = "right"; + mode-mon-col = 3; + format = { + months = "{}"; + weeks = "W{}"; + weekdays = "{}"; + days = "{}"; + today = "{}"; + }; + }; + }; + + "custom/ctlcenter" = { + format = ""; + tooltip = false; + on-click = "swaync-client -t &"; + }; + + "custom/arrow-left" = { + format = ""; + tooltip = false; + cursor = true; + }; + + "custom/arrow-right" = { + format = ""; + tooltip = false; + cursor = true; + }; + } + ]; +} diff --git a/home/system/waybar/style.nix b/home/system/waybar/style.nix new file mode 100644 index 0000000..4370ce9 --- /dev/null +++ b/home/system/waybar/style.nix @@ -0,0 +1,204 @@ +{ config, ... }: let + c = config.lib.stylix.colors; + fg = "#${c.base05}"; + module-bg = "#${c.base01}"; + tooltip-bg = "#${c.base01}"; + red = "#${c.base08}"; + yellow = "#${c.base0A}"; + green = "#${c.base0B}"; + blue = "#${c.base0D}"; + inactive = "#${c.base03}"; + highlight = "#${c.base02}"; +in { + programs.waybar.style = '' + * { + font-family: 'CaskaydiaCove Nerd Font Propo'; + border: none; + border-radius: 0; + min-height: 0; + margin: 0; + padding: 0; + text-shadow: none; + } + + #waybar { + font-weight: 700; + background: transparent; + font-size: 14px; + color: ${fg}; + } + + #temperature, + #bluetooth, + #battery, + #memory, + #mpris, + #cpu, + #load { + padding: 1px 7px; + min-width: 0; + } + + #network, + #tray { + padding: 1px 6px; + } + + #backlight, + #pulseaudio { + padding: 1px 8px; + } + + #pulseaudio { + padding-left: 4px; + } + + #backlight-slider, + #pulseaudio-slider { + padding: 0 7px 0 2px; + } + + #workspaces, + #bluetooth, + #battery, + #memory, + #temperature, + #cpu, + #mpris, + #load { + margin: 0 3px; + } + + #right, + #left, + #right-hidden-top, + #left-hidden-top { + padding: 2px 10px; + border-radius: 15px; + background: ${module-bg}; + } + + #right-hidden-top, + #left-hidden-top { + padding: 0 12px; + } + + #right, #left { + margin: 0 8px; + } + + #clock { + background: ${module-bg}; + padding: 1px 18px; + border-radius: 15px; + } + + #custom-ctlcenter { + margin-left: 7px; + } + + #power-profiles-daemon { + margin-right: 7px; + } + + #network.disabled, + #bluetooth.disabled { + padding: 0; + margin: 0; + min-width: 0; + } + + #cpu.critical, + #memory.critical, + #battery.critical, + #temperature.critical, + #network.disconnected, + #power-profiles-daemon.performance { + color: ${red}; + } + + #cpu.warning, + #memory.warning, + #battery.warning, + #temperature.warning { + color: ${yellow}; + background: unset; + } + + #power-profiles-daemon.power-saver { + color: ${green}; + } + + #custom-start, + #custom-ctlcenter { + color: ${blue}; + } + + #workspaces button { + color: ${fg}; + font-size: 14px; + border-radius: 100%; + padding: 0 2px; + margin: 0 3px; + } + + #workspaces button:hover { + background: transparent; + } + + #mpris.paused { + color: ${inactive}; + } + + tooltip { + border-radius: 15px; + background: ${tooltip-bg}; + } + + tooltip label { + padding: 3px 10px; + color: ${fg}; + font-weight: 700; + } + + .popup * { + box-shadow: none; + outline: none; + border-radius: 10px; + } + + menu { + border-radius: 10px; + font-weight: 700; + color: ${fg}; + background: ${tooltip-bg}; + } + + menu > * { + padding: 3px 0px; + } + + menu > *:hover { + border-radius: 10px; + background-color: ${highlight}; + } + + slider { + opacity: 0; + box-shadow: none; + } + + trough { + min-width: 50px; + min-height: 5px; + border-radius: 8px; + background: ${inactive}; + } + + trough highlight { + border-radius: 8px; + background-color: ${fg}; + background-image: none; + } + ''; +} diff --git a/hosts/work/configuration.nix b/hosts/work/configuration.nix index 92c3c91..438e88f 100644 --- a/hosts/work/configuration.nix +++ b/hosts/work/configuration.nix @@ -2,7 +2,6 @@ imports = [ # Mostly system related configuration ../../nixos/audio.nix - ../../nixos/bluetooth.nix ../../nixos/fonts.nix ../../nixos/home-manager.nix ../../nixos/nix.nix diff --git a/hosts/work/home.nix b/hosts/work/home.nix index 860dee8..0c2fabe 100644 --- a/hosts/work/home.nix +++ b/hosts/work/home.nix @@ -22,11 +22,16 @@ # System (Desktop environment like stuff) ../../home/system/hyprland - ../../home/system/caelestia-shell + # ../../home/system/caelestia-shell + ../../home/system/waybar ../../home/system/hyprpaper ../../home/system/mime ../../home/system/udiskie + # Apps + ../../home/swaync + ../../home/rofi + ./variables.nix # Mostly user-specific configuration ./secrets # CHANGEME: You should probably remove this line, this is where I store my secrets ]; diff --git a/nixos/systemd-boot.nix b/nixos/systemd-boot.nix index 1dbd4fa..bac23a6 100644 --- a/nixos/systemd-boot.nix +++ b/nixos/systemd-boot.nix @@ -1,7 +1,6 @@ # Systemd-boot configuration for NixOS {pkgs, ...}: { boot = { - bootspec.enable = true; loader = { efi.canTouchEfiVariables = true; systemd-boot = {