From e3a1dd36d7b9edc403382b98122bca436b6cb9da Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Sat, 12 Apr 2025 17:05:38 +0200 Subject: [PATCH 01/15] :sparkles: Moved modules and hm dir to hosts dir. Moved some code to shared and extended lib with custom functions --- .gitattributes | 2 +- flake.lock | 350 +++++++++++++++--- flake.nix | 149 +++++--- .../desktop/default.nix | 0 hosts/desktop/flake.nix | 74 ++++ .../desktop/home-manager}/btop.nix | 0 .../desktop/home-manager}/cava/cava.png | Bin .../desktop/home-manager}/cava/default.nix | 0 .../desktop/home-manager}/cursors.nix | 0 .../home-manager}/default-applications.nix | 0 .../desktop/home-manager}/default.nix | 4 + .../home-manager}/development/default.nix | 0 .../desktop/home-manager}/development/git.nix | 0 .../development/nixvim/default.nix | 0 .../desktop/home-manager}/development/zed.nix | 0 .../desktop/home-manager}/fastfetch.nix | 4 +- .../desktop/home-manager}/fish.nix | 0 .../desktop/home-manager}/freetube.nix | 0 .../desktop/home-manager}/gpg.nix | 0 .../desktop/home-manager}/gtk.nix | 0 .../desktop/home-manager}/hyprland/binds.nix | 0 .../home-manager}/hyprland/default.nix | 5 - .../hyprland/hypridle/default.nix | 0 .../hyprland/hyprlock/default.nix | 0 .../hyprland/hyprpanel/default.nix | 47 ++- .../home-manager}/hyprland/hyprpaper.nix | 0 .../home-manager}/hyprland/hyprshot.nix | 0 .../home-manager}/hyprland/settings.nix | 0 .../home-manager}/hyprland/swaync/default.nix | 0 .../hyprland/waybar/config/config.jsonc | 0 .../hyprland/waybar/config/mocha.css | 0 .../hyprland/waybar/config/style.css | 0 .../home-manager}/hyprland/waybar/default.nix | 0 .../desktop/home-manager}/kitty.nix | 0 .../desktop/home-manager}/media/default.nix | 0 .../desktop/home-manager}/media/imv.nix | 0 .../desktop/home-manager}/media/mpv.nix | 0 .../desktop/home-manager}/nextcloud.nix | 0 .../home-manager}/rofi/catppuccin-mocha.rasi | 0 .../desktop/home-manager}/rofi/config.rasi | 0 .../desktop/home-manager}/rofi/default.nix | 0 .../desktop/home-manager}/rofi/rofimoji.rc | 0 .../desktop/home-manager}/spicetify.nix | 0 .../desktop/home-manager}/wlogout/default.nix | 0 .../home-manager}/wlogout/hibernate.svg | 0 .../desktop/home-manager}/wlogout/lock.svg | 0 .../desktop/home-manager}/wlogout/logout.svg | 0 .../desktop/home-manager}/wlogout/reboot.svg | 0 .../home-manager}/wlogout/shutdown.svg | 0 .../desktop/home-manager}/wlogout/style.css | 0 .../desktop/home-manager}/wlogout/suspend.svg | 0 .../yazi/catppuccin-mocha.tmTheme | 0 .../desktop/home-manager}/yazi/default.nix | 0 .../desktop/home-manager}/yazi/icons.nix | 0 .../home-manager}/zen/chrome/userChrome.css | 0 .../home-manager}/zen/chrome/userContent.css | 0 .../home-manager}/zen/chrome/zen-logo.svg | 0 .../desktop/home-manager}/zen/default.nix | 0 .../desktop/modules}/default.nix | 0 .../desktop/modules}/development/default.nix | 0 .../desktop/modules}/development/docker.nix | 0 .../desktop/modules}/development/dotnet.nix | 0 .../desktop/modules}/development/nix.nix | 0 .../desktop/modules}/development/node.nix | 0 .../desktop/modules}/development/ollama.nix | 0 .../desktop/modules}/development/rust.nix | 0 {modules => hosts/desktop/modules}/fonts.nix | 0 .../desktop/modules}/gaming/default.nix | 0 .../desktop/modules}/gaming/steam.nix | 0 .../desktop/modules}/gnome/default.nix | 0 .../desktop/modules}/gnome/nautilus.nix | 0 .../desktop/modules}/hardware/audio.nix | 0 .../desktop/modules}/hardware/default.nix | 0 .../modules}/hardware/graphics/default.nix | 0 .../modules}/hardware/graphics/nvidia.nix | 0 .../hardware/hardware-configuration.nix | 0 .../desktop/modules}/hardware/keyboard.nix | 0 .../desktop/modules}/hyprland/default.nix | 0 {modules => hosts/desktop/modules}/locale.nix | 0 .../desktop/modules}/networking.nix | 0 .../desktop/modules}/nix-helper.nix | 0 {modules => hosts/desktop/modules}/qt.nix | 0 {modules => hosts/desktop/modules}/sddm.nix | 0 .../desktop/modules}/security.nix | 0 {modules => hosts/desktop/modules}/shell.nix | 0 hosts/desktop/overlays.nix | 7 + lib/default.nix | 21 ++ overlays.nix | 10 +- .../assets/Catppuccin.png | Bin {assets => shared/assets}/catppuccin_high.png | Bin .../assets}/catppuccin_page_curl.png | Bin {assets => shared/assets}/downtown.gif | Bin {assets => shared/assets}/ekg_v2.png | Bin {assets => shared/assets}/face.png | Bin {assets => shared/assets}/nixos_waves.png | Bin common.nix => shared/common.nix | 4 +- .../secrets/weather-api-key | Bin theme.nix => shared/theme.nix | 0 shell.nix | 13 + 99 files changed, 550 insertions(+), 140 deletions(-) rename configuration.nix => hosts/desktop/default.nix (100%) create mode 100644 hosts/desktop/flake.nix rename {home-manager => hosts/desktop/home-manager}/btop.nix (100%) rename {home-manager => hosts/desktop/home-manager}/cava/cava.png (100%) rename {home-manager => hosts/desktop/home-manager}/cava/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/cursors.nix (100%) rename {home-manager => hosts/desktop/home-manager}/default-applications.nix (100%) rename {home-manager => hosts/desktop/home-manager}/default.nix (86%) rename {home-manager => hosts/desktop/home-manager}/development/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/development/git.nix (100%) rename {home-manager => hosts/desktop/home-manager}/development/nixvim/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/development/zed.nix (100%) rename {home-manager => hosts/desktop/home-manager}/fastfetch.nix (93%) rename {home-manager => hosts/desktop/home-manager}/fish.nix (100%) rename {home-manager => hosts/desktop/home-manager}/freetube.nix (100%) rename {home-manager => hosts/desktop/home-manager}/gpg.nix (100%) rename {home-manager => hosts/desktop/home-manager}/gtk.nix (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/binds.nix (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/default.nix (70%) rename {home-manager => hosts/desktop/home-manager}/hyprland/hypridle/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/hyprlock/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/hyprpanel/default.nix (83%) rename {home-manager => hosts/desktop/home-manager}/hyprland/hyprpaper.nix (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/hyprshot.nix (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/settings.nix (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/swaync/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/waybar/config/config.jsonc (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/waybar/config/mocha.css (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/waybar/config/style.css (100%) rename {home-manager => hosts/desktop/home-manager}/hyprland/waybar/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/kitty.nix (100%) rename {home-manager => hosts/desktop/home-manager}/media/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/media/imv.nix (100%) rename {home-manager => hosts/desktop/home-manager}/media/mpv.nix (100%) rename {home-manager => hosts/desktop/home-manager}/nextcloud.nix (100%) rename {home-manager => hosts/desktop/home-manager}/rofi/catppuccin-mocha.rasi (100%) rename {home-manager => hosts/desktop/home-manager}/rofi/config.rasi (100%) rename {home-manager => hosts/desktop/home-manager}/rofi/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/rofi/rofimoji.rc (100%) rename {home-manager => hosts/desktop/home-manager}/spicetify.nix (100%) rename {home-manager => hosts/desktop/home-manager}/wlogout/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/wlogout/hibernate.svg (100%) rename {home-manager => hosts/desktop/home-manager}/wlogout/lock.svg (100%) rename {home-manager => hosts/desktop/home-manager}/wlogout/logout.svg (100%) rename {home-manager => hosts/desktop/home-manager}/wlogout/reboot.svg (100%) rename {home-manager => hosts/desktop/home-manager}/wlogout/shutdown.svg (100%) rename {home-manager => hosts/desktop/home-manager}/wlogout/style.css (100%) rename {home-manager => hosts/desktop/home-manager}/wlogout/suspend.svg (100%) rename {home-manager => hosts/desktop/home-manager}/yazi/catppuccin-mocha.tmTheme (100%) rename {home-manager => hosts/desktop/home-manager}/yazi/default.nix (100%) rename {home-manager => hosts/desktop/home-manager}/yazi/icons.nix (100%) rename {home-manager => hosts/desktop/home-manager}/zen/chrome/userChrome.css (100%) rename {home-manager => hosts/desktop/home-manager}/zen/chrome/userContent.css (100%) rename {home-manager => hosts/desktop/home-manager}/zen/chrome/zen-logo.svg (100%) rename {home-manager => hosts/desktop/home-manager}/zen/default.nix (100%) rename {modules => hosts/desktop/modules}/default.nix (100%) rename {modules => hosts/desktop/modules}/development/default.nix (100%) rename {modules => hosts/desktop/modules}/development/docker.nix (100%) rename {modules => hosts/desktop/modules}/development/dotnet.nix (100%) rename {modules => hosts/desktop/modules}/development/nix.nix (100%) rename {modules => hosts/desktop/modules}/development/node.nix (100%) rename {modules => hosts/desktop/modules}/development/ollama.nix (100%) rename {modules => hosts/desktop/modules}/development/rust.nix (100%) rename {modules => hosts/desktop/modules}/fonts.nix (100%) rename {modules => hosts/desktop/modules}/gaming/default.nix (100%) rename {modules => hosts/desktop/modules}/gaming/steam.nix (100%) rename {modules => hosts/desktop/modules}/gnome/default.nix (100%) rename {modules => hosts/desktop/modules}/gnome/nautilus.nix (100%) rename {modules => hosts/desktop/modules}/hardware/audio.nix (100%) rename {modules => hosts/desktop/modules}/hardware/default.nix (100%) rename {modules => hosts/desktop/modules}/hardware/graphics/default.nix (100%) rename {modules => hosts/desktop/modules}/hardware/graphics/nvidia.nix (100%) rename {modules => hosts/desktop/modules}/hardware/hardware-configuration.nix (100%) rename {modules => hosts/desktop/modules}/hardware/keyboard.nix (100%) rename {modules => hosts/desktop/modules}/hyprland/default.nix (100%) rename {modules => hosts/desktop/modules}/locale.nix (100%) rename {modules => hosts/desktop/modules}/networking.nix (100%) rename {modules => hosts/desktop/modules}/nix-helper.nix (100%) rename {modules => hosts/desktop/modules}/qt.nix (100%) rename {modules => hosts/desktop/modules}/sddm.nix (100%) rename {modules => hosts/desktop/modules}/security.nix (100%) rename {modules => hosts/desktop/modules}/shell.nix (100%) create mode 100644 hosts/desktop/overlays.nix create mode 100644 lib/default.nix rename Catppuccin.png => shared/assets/Catppuccin.png (100%) rename {assets => shared/assets}/catppuccin_high.png (100%) rename {assets => shared/assets}/catppuccin_page_curl.png (100%) rename {assets => shared/assets}/downtown.gif (100%) rename {assets => shared/assets}/ekg_v2.png (100%) rename {assets => shared/assets}/face.png (100%) rename {assets => shared/assets}/nixos_waves.png (100%) rename common.nix => shared/common.nix (90%) rename {home-manager => shared}/secrets/weather-api-key (100%) rename theme.nix => shared/theme.nix (100%) create mode 100644 shell.nix diff --git a/.gitattributes b/.gitattributes index 2f4eec3..95d2ba0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1 @@ -home-manager/secrets/* filter=git-crypt diff=git-crypt +shared/secrets/* filter=git-crypt diff=git-crypt diff --git a/flake.lock b/flake.lock index a360bc3..7ab72e3 100644 --- a/flake.lock +++ b/flake.lock @@ -3,7 +3,10 @@ "ags": { "inputs": { "astal": "astal", - "nixpkgs": ["hyprpanel", "nixpkgs"] + "nixpkgs": [ + "hyprpanel", + "nixpkgs" + ] }, "locked": { "lastModified": 1736090999, @@ -21,7 +24,11 @@ }, "astal": { "inputs": { - "nixpkgs": ["hyprpanel", "ags", "nixpkgs"] + "nixpkgs": [ + "hyprpanel", + "ags", + "nixpkgs" + ] }, "locked": { "lastModified": 1735172721, @@ -42,11 +49,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1743414153, - "narHash": "sha256-bFIXz7SvLlSNR4M3vYPYS1CpEN9vTUiH01R4iR/BDmA=", + "lastModified": 1744447794, + "narHash": "sha256-z5uK5BDmFg0L/0EW2XYLGr39FbQeXyNVnIEhkZrG8+Q=", "owner": "catppuccin", "repo": "nix", - "rev": "2f52f9ead26f80d7b391cedcbb3eb309bd83fff4", + "rev": "c44fe73ed8e5d5809eded7cc6156ca9c40044e42", "type": "github" }, "original": { @@ -55,9 +62,47 @@ "type": "github" } }, + "devshell": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741473158, + "narHash": "sha256-kWNaq6wQUbUMlPgw8Y+9/9wP0F8SHkjy24/mN3UAppg=", + "owner": "numtide", + "repo": "devshell", + "rev": "7c9e793ebe66bcba8292989a68c0419b737a22a0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, "flake-parts": { "inputs": { - "nixpkgs-lib": ["nixvim", "nixpkgs"] + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] }, "locked": { "lastModified": 1743550720, @@ -91,16 +136,64 @@ "type": "github" } }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "nixvim", + "flake-compat" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixvim", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "grayjay": { "inputs": { "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1743563044, - "narHash": "sha256-UkykPaJt9Yr8YbBg34Bnh4wE+J2sksSDFdaalfnkG6k=", + "lastModified": 1744375210, + "narHash": "sha256-aMnp0e+oGmsZ+VC6mgrE6lUcKMjBPotLesCosejRhdw=", "owner": "rishabh5321", "repo": "grayjay-flake", - "rev": "82a651064b00480042d1b7f180ca77e04ea08689", + "rev": "ab754473aecde1afad07ab5a5903c9336bcb5442", "type": "github" }, "original": { @@ -111,14 +204,16 @@ }, "home-manager": { "inputs": { - "nixpkgs": ["nixpkgs"] + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { - "lastModified": 1743387206, - "narHash": "sha256-24N3NAuZZbYqZ39NgToZgHUw6M7xHrtrAm18kv0+2Wo=", + "lastModified": 1744117652, + "narHash": "sha256-t7dFCDl4vIOOUMhEZnJF15aAzkpaup9x4ZRGToDFYWI=", "owner": "nix-community", "repo": "home-manager", - "rev": "15c5f9d04fabd176f30286c8f52bbdb2c853a146", + "rev": "b4e98224ad1336751a2ac7493967a4c9f6d9cb3f", "type": "github" }, "original": { @@ -128,17 +223,60 @@ "type": "github" } }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1743808813, + "narHash": "sha256-2lDQBOmlz9ggPxcS7/GvcVdzXMIiT+PpMao6FbLJSr0=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "a9f8b3db211b4609ddd83683f9db89796c7f6ac6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-24.11", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_3": { + "inputs": { + "nixpkgs": [ + "zen-browser", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1743604125, + "narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, "hyprpanel": { "inputs": { "ags": "ags", "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1740863579, - "narHash": "sha256-U4amsszfgPUTAa9FrIlYsCCpmAyko22h/nbjhmAZvAs=", + "lastModified": 1744259355, + "narHash": "sha256-gykRJw309t5NLuYXzWw9WhJFKTc4OASmc16M9jD/Vpw=", "owner": "Jas-SinghFSU", "repo": "HyprPanel", - "rev": "2be9f1ef6c2df2ecf0eebe5a039e8029d8d151cd", + "rev": "1d4d2dcc20ebd707d5e45c7e357acc1267a498d7", "type": "github" }, "original": { @@ -149,8 +287,16 @@ }, "ixx": { "inputs": { - "flake-utils": ["nixvim", "nuschtosSearch", "flake-utils"], - "nixpkgs": ["nixvim", "nuschtosSearch", "nixpkgs"] + "flake-utils": [ + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "nixvim", + "nuschtosSearch", + "nixpkgs" + ] }, "locked": { "lastModified": 1729958008, @@ -167,13 +313,35 @@ "type": "github" } }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1743127615, + "narHash": "sha256-+sMGqywrSr50BGMLMeY789mSrzjkoxZiu61eWjYS/8o=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "fc843893cecc1838a59713ee3e50e9e7edc6207c", + "type": "github" + }, + "original": { + "owner": "lnl7", + "ref": "nix-darwin-24.11", + "repo": "nix-darwin", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1742889210, - "narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=", + "lastModified": 1744098102, + "narHash": "sha256-tzCdyIJj9AjysC3OuKA+tMD/kDEDAF9mICPDU7ix0JA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "698214a32beb4f4c8e3942372c694f40848b360d", + "rev": "c8cd81426f45942bb2906d5ed2fe21d2f19d95b7", "type": "github" }, "original": { @@ -183,17 +351,33 @@ "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs-stable": { "locked": { - "lastModified": 1743448293, - "narHash": "sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm+seVaGhs=", - "owner": "nixos", + "lastModified": 1744309437, + "narHash": "sha256-QZnNHM823am8apCqKSPdtnzPGTy2ZB4zIXOVoBp5+W0=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "77b584d61ff80b4cef9245829a6f1dfad5afdfa3", + "rev": "f9ebe33a928b5d529c895202263a5ce46bdf12f7", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1744232761, + "narHash": "sha256-gbl9hE39nQRpZaLjhWKmEu5ejtQsgI5TWYrIVVJn30U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f675531bc7e6657c10a18b565cfebd8aa9e24c14", + "type": "github" + }, + "original": { + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -201,11 +385,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1743448293, - "narHash": "sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm+seVaGhs=", + "lastModified": 1744232761, + "narHash": "sha256-gbl9hE39nQRpZaLjhWKmEu5ejtQsgI5TWYrIVVJn30U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "77b584d61ff80b4cef9245829a6f1dfad5afdfa3", + "rev": "f675531bc7e6657c10a18b565cfebd8aa9e24c14", "type": "github" }, "original": { @@ -233,15 +417,15 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1743501102, - "narHash": "sha256-7PCBQ4aGVF8OrzMkzqtYSKyoQuU2jtpPi4lmABpe5X4=", - "owner": "nixos", + "lastModified": 1744309437, + "narHash": "sha256-QZnNHM823am8apCqKSPdtnzPGTy2ZB4zIXOVoBp5+W0=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "02f2af8c8a8c3b2c05028936a1e84daefa1171d4", + "rev": "f9ebe33a928b5d529c895202263a5ce46bdf12f7", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixos-24.11", "repo": "nixpkgs", "type": "github" @@ -249,11 +433,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1742288794, - "narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=", + "lastModified": 1743448293, + "narHash": "sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm+seVaGhs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b6eaf97c6960d97350c584de1b6dcff03c9daf42", + "rev": "77b584d61ff80b4cef9245829a6f1dfad5afdfa3", "type": "github" }, "original": { @@ -265,20 +449,29 @@ }, "nixvim": { "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat", "flake-parts": "flake-parts", - "nixpkgs": ["nixpkgs-unstable"], - "nuschtosSearch": "nuschtosSearch" + "git-hooks": "git-hooks", + "home-manager": "home-manager_2", + "nix-darwin": "nix-darwin", + "nixpkgs": [ + "nixpkgs" + ], + "nuschtosSearch": "nuschtosSearch", + "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1743598191, - "narHash": "sha256-30aI8rWjX64E9vIlE4iqgQguTjItvTnQLTqHtFppF/w=", + "lastModified": 1743856924, + "narHash": "sha256-CgCbUGd9y639PfcuzA0TrA6O5N1ICl+mB95+qTG52+E=", "owner": "nix-community", "repo": "nixvim", - "rev": "a183298bf67307bdb7a25a2a3c565e76029f1b9e", + "rev": "d209a04d349febe85c777078ca2eeea5e8bbc8a1", "type": "github" }, "original": { "owner": "nix-community", + "ref": "nixos-24.11", "repo": "nixvim", "type": "github" } @@ -287,14 +480,17 @@ "inputs": { "flake-utils": "flake-utils", "ixx": "ixx", - "nixpkgs": ["nixvim", "nixpkgs"] + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] }, "locked": { - "lastModified": 1743201766, - "narHash": "sha256-bb/dqoIjtIWtJRzASOe8g4m8W2jUIWtuoGPXdNjM/Tk=", + "lastModified": 1743683223, + "narHash": "sha256-LdXtHFvhEC3S64dphap1pkkzwjErbW65eH1VRerCUT0=", "owner": "NuschtOS", "repo": "search", - "rev": "2651dbfad93d6ef66c440cbbf23238938b187bde", + "rev": "56a49ffef2908dad1e9a8adef1f18802bc760962", "type": "github" }, "original": { @@ -310,23 +506,47 @@ "home-manager": "home-manager", "hyprpanel": "hyprpanel", "nixpkgs": "nixpkgs_4", + "nixpkgs-stable": "nixpkgs-stable", "nixpkgs-unstable": "nixpkgs-unstable", "nixvim": "nixvim", + "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix", "zen-browser": "zen-browser" } }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1744103455, + "narHash": "sha256-SR6+qjkPjGQG+8eM4dCcVtss8r9bre/LAxFMPJpaZeU=", + "owner": "mic92", + "repo": "sops-nix", + "rev": "69d5a5a4635c27dae5a742f36108beccc506c1ba", + "type": "github" + }, + "original": { + "owner": "mic92", + "repo": "sops-nix", + "type": "github" + } + }, "spicetify-nix": { "inputs": { - "nixpkgs": ["nixpkgs"], + "nixpkgs": [ + "nixpkgs-unstable" + ], "systems": "systems_2" }, "locked": { - "lastModified": 1743595372, - "narHash": "sha256-e3x1mhpPpYgyyin9j/VbrBpOT5PFpEfx2hkxVZuJZhg=", + "lastModified": 1744423915, + "narHash": "sha256-6Hd8VyrOlmjlDBgPpx9NwX4+/uO4gEDIyjqbQLyniwE=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "543f12dd14c62ddee79ab79fbfd8726f312b89ff", + "rev": "4c4b9611c71d586ea818fa5b8dcbd81129f62560", "type": "github" }, "original": { @@ -365,16 +585,38 @@ "type": "github" } }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1743748085, + "narHash": "sha256-uhjnlaVTWo5iD3LXics1rp9gaKgDRQj6660+gbUU3cE=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "815e4121d6a5d504c0f96e5be2dd7f871e4fd99d", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "zen-browser": { "inputs": { + "home-manager": "home-manager_3", "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1743600524, - "narHash": "sha256-ZJesdL2jwCwBF4SsWvxNyGuHUv8cGLHIQwJxma6JQR0=", + "lastModified": 1744406237, + "narHash": "sha256-Xbt5m3/ZNeye4b42rCZOLbD8OhCOeJfUSEJ+FvfXwpg=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "9818e303273448dde6ada0f7bff8b98f5ce261da", + "rev": "4d9ee0daab52a7a205e69cfddcd441ffaa09c802", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 51aeef2..d83ab2d 100644 --- a/flake.nix +++ b/flake.nix @@ -1,75 +1,108 @@ { - description = "NixOS configuration"; + description = "Martin's NixOS configuration - Based on EmergentMind/nix-config"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; - nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + # + # ========= Official NixOS and HM Package Sources ========= + # + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; + # The next two are for pinning to stable vs unstable regardless of what the above is set to + # This is particularly useful when an upcoming stable release is in beta because you can effectively + # keep 'nixpkgs-stable' set to stable for critical packages while setting 'nixpkgs' to the beta branch to + # get a jump start on deprecation changes. + # See also 'stable-packages' and 'unstable-packages' overlays at 'overlays/default.nix" + nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.11"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; - catppuccin = { - url = "github:catppuccin/nix"; - }; home-manager = { url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; }; + + # + # ========= Utilities ========= + # + # Secrets management + sops-nix = { + url = "github:mic92/sops-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # Catppuccin theming + catppuccin = { + url = "github:catppuccin/nix"; + }; + # vim + nixvim = { + url = "github:nix-community/nixvim/nixos-24.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # Bar hyprpanel = { url = "github:Jas-SinghFSU/HyprPanel"; }; - nixvim = { - url = "github:nix-community/nixvim"; - inputs.nixpkgs.follows = "nixpkgs-unstable"; - }; + # Spotify spicetify-nix = { url = "github:Gerg-L/spicetify-nix"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; }; + # Browser zen-browser.url = "github:0xc000022070/zen-browser-flake"; + # Video aggregator grayjay.url = "github:rishabh5321/grayjay-flake"; }; outputs = - inputs@{ - self, # Get a ref to outputs + { + self, nixpkgs, - nixpkgs-unstable, home-manager, ... - }: + }@inputs: let - system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; inherit (self) outputs; - common = import ./common.nix; - theme = import ./theme.nix; + common = import ./shared/common.nix; + theme = import ./shared/theme.nix; + + # + # ========= Architectures ========= + # + forAllSystems = nixpkgs.lib.genAttrs [ + "x86_64-linux" + "aarch64-linux" + ]; + + # ========== Extend lib with lib.custom ========== + # NOTE: This approach allows lib.custom to propagate into hm + # see: https://github.com/nix-community/home-manager/pull/3454 + customLib = (_self: _super: { custom = import ./lib { inherit (nixpkgs) lib; }; }); + lib = nixpkgs.lib.extend customLib; + libHm = home-manager.lib.extend customLib; + in { - defaultPackage.${system} = home-manager.defaultPackage.${system}; + # + # ========= Overlays ========= + # + # Custom modifications/overrides to upstream packages + overlays = import ./overlays.nix { inherit inputs; }; - # The minimum amount of dependencies in order to run 'just switch-now' - devShells.${system}.default = pkgs.mkShell { - packages = with pkgs; [ - just - git - git-crypt - nh - ]; - }; - - # Adds the nix fmt command to format nix files - formatter.${system} = pkgs.nixfmt-rfc-style; - - nixosConfigurations.${common.hostname} = nixpkgs.lib.nixosSystem { - system = system; + # + # ========= Host Configurations ========= + # + nixosConfigurations.desktop = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; specialArgs = { inherit outputs inputs common theme + lib ; - }; # Pass args to modules + isDarwin = false; + }; modules = [ - ./configuration.nix + ./hosts/desktop home-manager.nixosModules.home-manager { home-manager = { @@ -78,22 +111,40 @@ useGlobalPkgs = true; useUserPackages = true; # Passes inputs as an argument to home-manager - extraSpecialArgs = { inherit inputs common theme; }; - users.${common.username} = import ./home-manager; + extraSpecialArgs = { + inherit + inputs + common + theme + libHm + ; + }; + users.${common.username} = import ./hosts/desktop/home-manager; }; } - ./overlays.nix + { + nixpkgs.overlays = with inputs; [ + hyprpanel.overlay + ]; + } ]; }; - overlays = { - # Gives access to unstable packages everywhere - unstable-packages = final: _prev: { - unstable = import nixpkgs-unstable { - system = final.system; - config.allowUnfree = true; - }; - }; - }; + # + # ========= Formatting ========= + # + # Nix formatter available through 'nix fmt' https://github.com/NixOS/nixfmt + formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style); + + # + # ========= DevShell ========= + # + # Custom shell for bootstrapping on new hosts, modifying nix-config, and secrets management + devShells = forAllSystems ( + system: + import ./shell.nix { + pkgs = nixpkgs.legacyPackages.${system}; + } + ); }; } diff --git a/configuration.nix b/hosts/desktop/default.nix similarity index 100% rename from configuration.nix rename to hosts/desktop/default.nix diff --git a/hosts/desktop/flake.nix b/hosts/desktop/flake.nix new file mode 100644 index 0000000..869ed37 --- /dev/null +++ b/hosts/desktop/flake.nix @@ -0,0 +1,74 @@ +{ + description = "NixOS configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; + nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + + home-manager = { + url = "github:nix-community/home-manager/release-24.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + }; + + outputs = + inputs@{ + self, + nixpkgs, + nixpkgs-unstable, + home-manager, + ... + }: + let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + inherit (self) outputs; + common = import ./common.nix; + theme = import ../shared/theme.nix; + in + { + defaultPackage.${system} = home-manager.defaultPackage.${system}; + + # Adds the nix fmt command to format nix files + formatter.${system} = pkgs.nixfmt-rfc-style; + + nixosConfigurations.${common.hostname} = nixpkgs.lib.nixosSystem { + system = system; + specialArgs = { + inherit + outputs + inputs + common + theme + ; + }; # Pass args to modules + modules = [ + ./configuration.nix + home-manager.nixosModules.home-manager + { + home-manager = { + # Backups conflicting files in case of error + backupFileExtension = "bkp"; + useGlobalPkgs = true; + useUserPackages = true; + # Passes inputs as an argument to home-manager + extraSpecialArgs = { inherit inputs common theme; }; + users.${common.username} = import ./home-manager; + }; + } + ./overlays.nix + ]; + }; + + overlays = { + # Gives access to unstable packages everywhere + unstable-packages = final: _prev: { + unstable = import nixpkgs-unstable { + system = final.system; + config.allowUnfree = true; + }; + }; + }; + }; +} diff --git a/home-manager/btop.nix b/hosts/desktop/home-manager/btop.nix similarity index 100% rename from home-manager/btop.nix rename to hosts/desktop/home-manager/btop.nix diff --git a/home-manager/cava/cava.png b/hosts/desktop/home-manager/cava/cava.png similarity index 100% rename from home-manager/cava/cava.png rename to hosts/desktop/home-manager/cava/cava.png diff --git a/home-manager/cava/default.nix b/hosts/desktop/home-manager/cava/default.nix similarity index 100% rename from home-manager/cava/default.nix rename to hosts/desktop/home-manager/cava/default.nix diff --git a/home-manager/cursors.nix b/hosts/desktop/home-manager/cursors.nix similarity index 100% rename from home-manager/cursors.nix rename to hosts/desktop/home-manager/cursors.nix diff --git a/home-manager/default-applications.nix b/hosts/desktop/home-manager/default-applications.nix similarity index 100% rename from home-manager/default-applications.nix rename to hosts/desktop/home-manager/default-applications.nix diff --git a/home-manager/default.nix b/hosts/desktop/home-manager/default.nix similarity index 86% rename from home-manager/default.nix rename to hosts/desktop/home-manager/default.nix index 71172c5..db18a80 100644 --- a/home-manager/default.nix +++ b/hosts/desktop/home-manager/default.nix @@ -1,5 +1,6 @@ { inputs, + outputs, common, ... }: @@ -45,6 +46,9 @@ in stateVersion = common.system.version; }; + # Adds pkgs.unstable in order to fetch packages from unstable repositories + nixpkgs.overlays = [ outputs.overlays.unstable-packages ]; + # Let Home Manager install and manage itself. programs.home-manager.enable = true; } diff --git a/home-manager/development/default.nix b/hosts/desktop/home-manager/development/default.nix similarity index 100% rename from home-manager/development/default.nix rename to hosts/desktop/home-manager/development/default.nix diff --git a/home-manager/development/git.nix b/hosts/desktop/home-manager/development/git.nix similarity index 100% rename from home-manager/development/git.nix rename to hosts/desktop/home-manager/development/git.nix diff --git a/home-manager/development/nixvim/default.nix b/hosts/desktop/home-manager/development/nixvim/default.nix similarity index 100% rename from home-manager/development/nixvim/default.nix rename to hosts/desktop/home-manager/development/nixvim/default.nix diff --git a/home-manager/development/zed.nix b/hosts/desktop/home-manager/development/zed.nix similarity index 100% rename from home-manager/development/zed.nix rename to hosts/desktop/home-manager/development/zed.nix diff --git a/home-manager/fastfetch.nix b/hosts/desktop/home-manager/fastfetch.nix similarity index 93% rename from home-manager/fastfetch.nix rename to hosts/desktop/home-manager/fastfetch.nix index c22ee20..8dfd272 100644 --- a/home-manager/fastfetch.nix +++ b/hosts/desktop/home-manager/fastfetch.nix @@ -1,3 +1,5 @@ +{ lib, ... }: + { programs = { fish.shellAliases.fetch = "fastfetch"; @@ -6,7 +8,7 @@ enable = true; settings = { logo = { - source = "${../Catppuccin.png}"; + source = "${lib.custom.relativeToRoot "shared/assets/Catppuccin.png"}"; type = "kitty"; height = 18; padding.top = 2; diff --git a/home-manager/fish.nix b/hosts/desktop/home-manager/fish.nix similarity index 100% rename from home-manager/fish.nix rename to hosts/desktop/home-manager/fish.nix diff --git a/home-manager/freetube.nix b/hosts/desktop/home-manager/freetube.nix similarity index 100% rename from home-manager/freetube.nix rename to hosts/desktop/home-manager/freetube.nix diff --git a/home-manager/gpg.nix b/hosts/desktop/home-manager/gpg.nix similarity index 100% rename from home-manager/gpg.nix rename to hosts/desktop/home-manager/gpg.nix diff --git a/home-manager/gtk.nix b/hosts/desktop/home-manager/gtk.nix similarity index 100% rename from home-manager/gtk.nix rename to hosts/desktop/home-manager/gtk.nix diff --git a/home-manager/hyprland/binds.nix b/hosts/desktop/home-manager/hyprland/binds.nix similarity index 100% rename from home-manager/hyprland/binds.nix rename to hosts/desktop/home-manager/hyprland/binds.nix diff --git a/home-manager/hyprland/default.nix b/hosts/desktop/home-manager/hyprland/default.nix similarity index 70% rename from home-manager/hyprland/default.nix rename to hosts/desktop/home-manager/hyprland/default.nix index 7948acc..9969757 100644 --- a/home-manager/hyprland/default.nix +++ b/hosts/desktop/home-manager/hyprland/default.nix @@ -1,6 +1,4 @@ # Home configurations for Hyprland. For system configs, see ./modules/hyprland -{ outputs, ... }: - { imports = [ ./binds.nix @@ -14,9 +12,6 @@ ./swaync ]; - # Adds pkgs.unstable in order to fetch packages from unstable repositories - nixpkgs.overlays = [ outputs.overlays.unstable-packages ]; - wayland.windowManager.hyprland = { enable = true; systemd.variables = [ "--all" ]; # Import environment into systemd diff --git a/home-manager/hyprland/hypridle/default.nix b/hosts/desktop/home-manager/hyprland/hypridle/default.nix similarity index 100% rename from home-manager/hyprland/hypridle/default.nix rename to hosts/desktop/home-manager/hyprland/hypridle/default.nix diff --git a/home-manager/hyprland/hyprlock/default.nix b/hosts/desktop/home-manager/hyprland/hyprlock/default.nix similarity index 100% rename from home-manager/hyprland/hyprlock/default.nix rename to hosts/desktop/home-manager/hyprland/hyprlock/default.nix diff --git a/home-manager/hyprland/hyprpanel/default.nix b/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix similarity index 83% rename from home-manager/hyprland/hyprpanel/default.nix rename to hosts/desktop/home-manager/hyprland/hyprpanel/default.nix index 75fe6d0..33dd320 100644 --- a/home-manager/hyprland/hyprpanel/default.nix +++ b/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix @@ -17,9 +17,6 @@ # Fix the overwrite issue with HyprPanel. overwrite.enable = true; - # Import a theme from './themes/*.json'. - theme = ""; - # Override the final config with an arbitrary set. # Useful for overriding colors in your selected theme. # Default: {} @@ -27,28 +24,6 @@ theme.bar.menus.text = "#123ABC"; }; - # Configure bar layouts for monitors. - layout = { - "bar.layouts" = { - "*" = { - left = [ - "dashboard" - "workspaces" - "windowtitle" - ]; - middle = [ "media" ]; - right = [ - "kbinput" - "volume" - "network" - "systray" - "clock" - "notifications" - ]; - }; - }; - }; - # Configure and theme almost all options from the GUI. # Options that require '{}' or '[]' are not yet implemented, # except for the layout above. @@ -70,6 +45,28 @@ }; }; + # Configure bar layouts for monitors. + layout = { + "bar.layouts" = { + "*" = { + left = [ + "dashboard" + "workspaces" + "windowtitle" + ]; + middle = [ "media" ]; + right = [ + "kbinput" + "volume" + "network" + "systray" + "clock" + "notifications" + ]; + }; + }; + }; + menus = { clock = { time = { diff --git a/home-manager/hyprland/hyprpaper.nix b/hosts/desktop/home-manager/hyprland/hyprpaper.nix similarity index 100% rename from home-manager/hyprland/hyprpaper.nix rename to hosts/desktop/home-manager/hyprland/hyprpaper.nix diff --git a/home-manager/hyprland/hyprshot.nix b/hosts/desktop/home-manager/hyprland/hyprshot.nix similarity index 100% rename from home-manager/hyprland/hyprshot.nix rename to hosts/desktop/home-manager/hyprland/hyprshot.nix diff --git a/home-manager/hyprland/settings.nix b/hosts/desktop/home-manager/hyprland/settings.nix similarity index 100% rename from home-manager/hyprland/settings.nix rename to hosts/desktop/home-manager/hyprland/settings.nix diff --git a/home-manager/hyprland/swaync/default.nix b/hosts/desktop/home-manager/hyprland/swaync/default.nix similarity index 100% rename from home-manager/hyprland/swaync/default.nix rename to hosts/desktop/home-manager/hyprland/swaync/default.nix diff --git a/home-manager/hyprland/waybar/config/config.jsonc b/hosts/desktop/home-manager/hyprland/waybar/config/config.jsonc similarity index 100% rename from home-manager/hyprland/waybar/config/config.jsonc rename to hosts/desktop/home-manager/hyprland/waybar/config/config.jsonc diff --git a/home-manager/hyprland/waybar/config/mocha.css b/hosts/desktop/home-manager/hyprland/waybar/config/mocha.css similarity index 100% rename from home-manager/hyprland/waybar/config/mocha.css rename to hosts/desktop/home-manager/hyprland/waybar/config/mocha.css diff --git a/home-manager/hyprland/waybar/config/style.css b/hosts/desktop/home-manager/hyprland/waybar/config/style.css similarity index 100% rename from home-manager/hyprland/waybar/config/style.css rename to hosts/desktop/home-manager/hyprland/waybar/config/style.css diff --git a/home-manager/hyprland/waybar/default.nix b/hosts/desktop/home-manager/hyprland/waybar/default.nix similarity index 100% rename from home-manager/hyprland/waybar/default.nix rename to hosts/desktop/home-manager/hyprland/waybar/default.nix diff --git a/home-manager/kitty.nix b/hosts/desktop/home-manager/kitty.nix similarity index 100% rename from home-manager/kitty.nix rename to hosts/desktop/home-manager/kitty.nix diff --git a/home-manager/media/default.nix b/hosts/desktop/home-manager/media/default.nix similarity index 100% rename from home-manager/media/default.nix rename to hosts/desktop/home-manager/media/default.nix diff --git a/home-manager/media/imv.nix b/hosts/desktop/home-manager/media/imv.nix similarity index 100% rename from home-manager/media/imv.nix rename to hosts/desktop/home-manager/media/imv.nix diff --git a/home-manager/media/mpv.nix b/hosts/desktop/home-manager/media/mpv.nix similarity index 100% rename from home-manager/media/mpv.nix rename to hosts/desktop/home-manager/media/mpv.nix diff --git a/home-manager/nextcloud.nix b/hosts/desktop/home-manager/nextcloud.nix similarity index 100% rename from home-manager/nextcloud.nix rename to hosts/desktop/home-manager/nextcloud.nix diff --git a/home-manager/rofi/catppuccin-mocha.rasi b/hosts/desktop/home-manager/rofi/catppuccin-mocha.rasi similarity index 100% rename from home-manager/rofi/catppuccin-mocha.rasi rename to hosts/desktop/home-manager/rofi/catppuccin-mocha.rasi diff --git a/home-manager/rofi/config.rasi b/hosts/desktop/home-manager/rofi/config.rasi similarity index 100% rename from home-manager/rofi/config.rasi rename to hosts/desktop/home-manager/rofi/config.rasi diff --git a/home-manager/rofi/default.nix b/hosts/desktop/home-manager/rofi/default.nix similarity index 100% rename from home-manager/rofi/default.nix rename to hosts/desktop/home-manager/rofi/default.nix diff --git a/home-manager/rofi/rofimoji.rc b/hosts/desktop/home-manager/rofi/rofimoji.rc similarity index 100% rename from home-manager/rofi/rofimoji.rc rename to hosts/desktop/home-manager/rofi/rofimoji.rc diff --git a/home-manager/spicetify.nix b/hosts/desktop/home-manager/spicetify.nix similarity index 100% rename from home-manager/spicetify.nix rename to hosts/desktop/home-manager/spicetify.nix diff --git a/home-manager/wlogout/default.nix b/hosts/desktop/home-manager/wlogout/default.nix similarity index 100% rename from home-manager/wlogout/default.nix rename to hosts/desktop/home-manager/wlogout/default.nix diff --git a/home-manager/wlogout/hibernate.svg b/hosts/desktop/home-manager/wlogout/hibernate.svg similarity index 100% rename from home-manager/wlogout/hibernate.svg rename to hosts/desktop/home-manager/wlogout/hibernate.svg diff --git a/home-manager/wlogout/lock.svg b/hosts/desktop/home-manager/wlogout/lock.svg similarity index 100% rename from home-manager/wlogout/lock.svg rename to hosts/desktop/home-manager/wlogout/lock.svg diff --git a/home-manager/wlogout/logout.svg b/hosts/desktop/home-manager/wlogout/logout.svg similarity index 100% rename from home-manager/wlogout/logout.svg rename to hosts/desktop/home-manager/wlogout/logout.svg diff --git a/home-manager/wlogout/reboot.svg b/hosts/desktop/home-manager/wlogout/reboot.svg similarity index 100% rename from home-manager/wlogout/reboot.svg rename to hosts/desktop/home-manager/wlogout/reboot.svg diff --git a/home-manager/wlogout/shutdown.svg b/hosts/desktop/home-manager/wlogout/shutdown.svg similarity index 100% rename from home-manager/wlogout/shutdown.svg rename to hosts/desktop/home-manager/wlogout/shutdown.svg diff --git a/home-manager/wlogout/style.css b/hosts/desktop/home-manager/wlogout/style.css similarity index 100% rename from home-manager/wlogout/style.css rename to hosts/desktop/home-manager/wlogout/style.css diff --git a/home-manager/wlogout/suspend.svg b/hosts/desktop/home-manager/wlogout/suspend.svg similarity index 100% rename from home-manager/wlogout/suspend.svg rename to hosts/desktop/home-manager/wlogout/suspend.svg diff --git a/home-manager/yazi/catppuccin-mocha.tmTheme b/hosts/desktop/home-manager/yazi/catppuccin-mocha.tmTheme similarity index 100% rename from home-manager/yazi/catppuccin-mocha.tmTheme rename to hosts/desktop/home-manager/yazi/catppuccin-mocha.tmTheme diff --git a/home-manager/yazi/default.nix b/hosts/desktop/home-manager/yazi/default.nix similarity index 100% rename from home-manager/yazi/default.nix rename to hosts/desktop/home-manager/yazi/default.nix diff --git a/home-manager/yazi/icons.nix b/hosts/desktop/home-manager/yazi/icons.nix similarity index 100% rename from home-manager/yazi/icons.nix rename to hosts/desktop/home-manager/yazi/icons.nix diff --git a/home-manager/zen/chrome/userChrome.css b/hosts/desktop/home-manager/zen/chrome/userChrome.css similarity index 100% rename from home-manager/zen/chrome/userChrome.css rename to hosts/desktop/home-manager/zen/chrome/userChrome.css diff --git a/home-manager/zen/chrome/userContent.css b/hosts/desktop/home-manager/zen/chrome/userContent.css similarity index 100% rename from home-manager/zen/chrome/userContent.css rename to hosts/desktop/home-manager/zen/chrome/userContent.css diff --git a/home-manager/zen/chrome/zen-logo.svg b/hosts/desktop/home-manager/zen/chrome/zen-logo.svg similarity index 100% rename from home-manager/zen/chrome/zen-logo.svg rename to hosts/desktop/home-manager/zen/chrome/zen-logo.svg diff --git a/home-manager/zen/default.nix b/hosts/desktop/home-manager/zen/default.nix similarity index 100% rename from home-manager/zen/default.nix rename to hosts/desktop/home-manager/zen/default.nix diff --git a/modules/default.nix b/hosts/desktop/modules/default.nix similarity index 100% rename from modules/default.nix rename to hosts/desktop/modules/default.nix diff --git a/modules/development/default.nix b/hosts/desktop/modules/development/default.nix similarity index 100% rename from modules/development/default.nix rename to hosts/desktop/modules/development/default.nix diff --git a/modules/development/docker.nix b/hosts/desktop/modules/development/docker.nix similarity index 100% rename from modules/development/docker.nix rename to hosts/desktop/modules/development/docker.nix diff --git a/modules/development/dotnet.nix b/hosts/desktop/modules/development/dotnet.nix similarity index 100% rename from modules/development/dotnet.nix rename to hosts/desktop/modules/development/dotnet.nix diff --git a/modules/development/nix.nix b/hosts/desktop/modules/development/nix.nix similarity index 100% rename from modules/development/nix.nix rename to hosts/desktop/modules/development/nix.nix diff --git a/modules/development/node.nix b/hosts/desktop/modules/development/node.nix similarity index 100% rename from modules/development/node.nix rename to hosts/desktop/modules/development/node.nix diff --git a/modules/development/ollama.nix b/hosts/desktop/modules/development/ollama.nix similarity index 100% rename from modules/development/ollama.nix rename to hosts/desktop/modules/development/ollama.nix diff --git a/modules/development/rust.nix b/hosts/desktop/modules/development/rust.nix similarity index 100% rename from modules/development/rust.nix rename to hosts/desktop/modules/development/rust.nix diff --git a/modules/fonts.nix b/hosts/desktop/modules/fonts.nix similarity index 100% rename from modules/fonts.nix rename to hosts/desktop/modules/fonts.nix diff --git a/modules/gaming/default.nix b/hosts/desktop/modules/gaming/default.nix similarity index 100% rename from modules/gaming/default.nix rename to hosts/desktop/modules/gaming/default.nix diff --git a/modules/gaming/steam.nix b/hosts/desktop/modules/gaming/steam.nix similarity index 100% rename from modules/gaming/steam.nix rename to hosts/desktop/modules/gaming/steam.nix diff --git a/modules/gnome/default.nix b/hosts/desktop/modules/gnome/default.nix similarity index 100% rename from modules/gnome/default.nix rename to hosts/desktop/modules/gnome/default.nix diff --git a/modules/gnome/nautilus.nix b/hosts/desktop/modules/gnome/nautilus.nix similarity index 100% rename from modules/gnome/nautilus.nix rename to hosts/desktop/modules/gnome/nautilus.nix diff --git a/modules/hardware/audio.nix b/hosts/desktop/modules/hardware/audio.nix similarity index 100% rename from modules/hardware/audio.nix rename to hosts/desktop/modules/hardware/audio.nix diff --git a/modules/hardware/default.nix b/hosts/desktop/modules/hardware/default.nix similarity index 100% rename from modules/hardware/default.nix rename to hosts/desktop/modules/hardware/default.nix diff --git a/modules/hardware/graphics/default.nix b/hosts/desktop/modules/hardware/graphics/default.nix similarity index 100% rename from modules/hardware/graphics/default.nix rename to hosts/desktop/modules/hardware/graphics/default.nix diff --git a/modules/hardware/graphics/nvidia.nix b/hosts/desktop/modules/hardware/graphics/nvidia.nix similarity index 100% rename from modules/hardware/graphics/nvidia.nix rename to hosts/desktop/modules/hardware/graphics/nvidia.nix diff --git a/modules/hardware/hardware-configuration.nix b/hosts/desktop/modules/hardware/hardware-configuration.nix similarity index 100% rename from modules/hardware/hardware-configuration.nix rename to hosts/desktop/modules/hardware/hardware-configuration.nix diff --git a/modules/hardware/keyboard.nix b/hosts/desktop/modules/hardware/keyboard.nix similarity index 100% rename from modules/hardware/keyboard.nix rename to hosts/desktop/modules/hardware/keyboard.nix diff --git a/modules/hyprland/default.nix b/hosts/desktop/modules/hyprland/default.nix similarity index 100% rename from modules/hyprland/default.nix rename to hosts/desktop/modules/hyprland/default.nix diff --git a/modules/locale.nix b/hosts/desktop/modules/locale.nix similarity index 100% rename from modules/locale.nix rename to hosts/desktop/modules/locale.nix diff --git a/modules/networking.nix b/hosts/desktop/modules/networking.nix similarity index 100% rename from modules/networking.nix rename to hosts/desktop/modules/networking.nix diff --git a/modules/nix-helper.nix b/hosts/desktop/modules/nix-helper.nix similarity index 100% rename from modules/nix-helper.nix rename to hosts/desktop/modules/nix-helper.nix diff --git a/modules/qt.nix b/hosts/desktop/modules/qt.nix similarity index 100% rename from modules/qt.nix rename to hosts/desktop/modules/qt.nix diff --git a/modules/sddm.nix b/hosts/desktop/modules/sddm.nix similarity index 100% rename from modules/sddm.nix rename to hosts/desktop/modules/sddm.nix diff --git a/modules/security.nix b/hosts/desktop/modules/security.nix similarity index 100% rename from modules/security.nix rename to hosts/desktop/modules/security.nix diff --git a/modules/shell.nix b/hosts/desktop/modules/shell.nix similarity index 100% rename from modules/shell.nix rename to hosts/desktop/modules/shell.nix diff --git a/hosts/desktop/overlays.nix b/hosts/desktop/overlays.nix new file mode 100644 index 0000000..b41909f --- /dev/null +++ b/hosts/desktop/overlays.nix @@ -0,0 +1,7 @@ +{ inputs, ... }: + +{ + nixpkgs.overlays = with inputs; [ + hyprpanel.overlay + ]; +} diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..6fb3445 --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,21 @@ +# FIXME(lib.custom): Add some stuff from hmajid2301/dotfiles/lib/module/default.nix, as simplifies option declaration +{ lib, ... }: + +{ + # use path relative to the root of the project + relativeToRoot = lib.path.append ../.; + scanPaths = + path: + builtins.map (f: (path + "/${f}")) ( + builtins.attrNames ( + lib.attrsets.filterAttrs ( + path: _type: + (_type == "directory") # include directories + || ( + (path != "default.nix") # ignore default.nix + && (lib.strings.hasSuffix ".nix" path) # include .nix files + ) + ) (builtins.readDir path) + ) + ); +} diff --git a/overlays.nix b/overlays.nix index b41909f..06cef4a 100644 --- a/overlays.nix +++ b/overlays.nix @@ -1,7 +1,11 @@ { inputs, ... }: { - nixpkgs.overlays = with inputs; [ - hyprpanel.overlay - ]; + # Gives access to unstable packages everywhere + unstable-packages = final: _prev: { + unstable = import inputs.nixpkgs-unstable { + system = final.system; + config.allowUnfree = true; + }; + }; } diff --git a/Catppuccin.png b/shared/assets/Catppuccin.png similarity index 100% rename from Catppuccin.png rename to shared/assets/Catppuccin.png diff --git a/assets/catppuccin_high.png b/shared/assets/catppuccin_high.png similarity index 100% rename from assets/catppuccin_high.png rename to shared/assets/catppuccin_high.png diff --git a/assets/catppuccin_page_curl.png b/shared/assets/catppuccin_page_curl.png similarity index 100% rename from assets/catppuccin_page_curl.png rename to shared/assets/catppuccin_page_curl.png diff --git a/assets/downtown.gif b/shared/assets/downtown.gif similarity index 100% rename from assets/downtown.gif rename to shared/assets/downtown.gif diff --git a/assets/ekg_v2.png b/shared/assets/ekg_v2.png similarity index 100% rename from assets/ekg_v2.png rename to shared/assets/ekg_v2.png diff --git a/assets/face.png b/shared/assets/face.png similarity index 100% rename from assets/face.png rename to shared/assets/face.png diff --git a/assets/nixos_waves.png b/shared/assets/nixos_waves.png similarity index 100% rename from assets/nixos_waves.png rename to shared/assets/nixos_waves.png diff --git a/common.nix b/shared/common.nix similarity index 90% rename from common.nix rename to shared/common.nix index db69804..86aaf2e 100644 --- a/common.nix +++ b/shared/common.nix @@ -13,7 +13,7 @@ rec { pictures = "${dir.home}/Pictures"; }; - hostname = "nixos"; + hostname = "desktop"; keymaps = { layout = "gb,no"; @@ -34,7 +34,7 @@ rec { # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.version = "24.11"; - secret.weatherApiKey = lib: loadSecret lib ./home-manager/secrets/weather-api-key; + secret.weatherApiKey = lib: loadSecret lib ./secrets/weather-api-key; loadSecret = lib: filePath: lib.strings.trim (lib.strings.removeSuffix "\n" (builtins.readFile filePath)); diff --git a/home-manager/secrets/weather-api-key b/shared/secrets/weather-api-key similarity index 100% rename from home-manager/secrets/weather-api-key rename to shared/secrets/weather-api-key diff --git a/theme.nix b/shared/theme.nix similarity index 100% rename from theme.nix rename to shared/theme.nix diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..c8df6ec --- /dev/null +++ b/shell.nix @@ -0,0 +1,13 @@ +{ pkgs }: + +{ + # The minimum amount of dependencies in order to run 'just switch-now' + default = pkgs.mkShell { + packages = with pkgs; [ + just + git + git-crypt + nh + ]; + }; +} -- 2.47.2 From 00cf2c38f972e538e840d70f68a5028134268330 Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Sat, 12 Apr 2025 18:51:28 +0200 Subject: [PATCH 02/15] :sparkles: Pass hostName in args, fix Hyprpanel theming, removed unused flake and overlay --- flake.nix | 83 ++++++++++--------- hosts/desktop/default.nix | 2 +- hosts/desktop/flake.nix | 74 ----------------- .../hyprland/hyprpanel/default.nix | 10 ++- hosts/desktop/modules/networking.nix | 4 +- hosts/desktop/overlays.nix | 7 -- shared/common.nix | 2 - 7 files changed, 55 insertions(+), 127 deletions(-) delete mode 100644 hosts/desktop/flake.nix delete mode 100644 hosts/desktop/overlays.nix diff --git a/flake.nix b/flake.nix index d83ab2d..b37c184 100644 --- a/flake.nix +++ b/flake.nix @@ -89,46 +89,51 @@ # # ========= Host Configurations ========= # - nixosConfigurations.desktop = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = { - inherit - outputs - inputs - common - theme - lib - ; - isDarwin = false; - }; - modules = [ - ./hosts/desktop - home-manager.nixosModules.home-manager - { - home-manager = { - # Backups conflicting files in case of error - backupFileExtension = "bkp"; - useGlobalPkgs = true; - useUserPackages = true; - # Passes inputs as an argument to home-manager - extraSpecialArgs = { - inherit - inputs - common - theme - libHm - ; + nixosConfigurations.desktop = + let + hostName = "desktop"; + in + nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit + outputs + inputs + common + theme + lib + hostName + ; + isDarwin = false; + }; + modules = [ + ./hosts/desktop + home-manager.nixosModules.home-manager + { + home-manager = { + # Backups conflicting files in case of error + backupFileExtension = "bkp"; + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { + inherit + inputs + common + theme + libHm + hostName + ; + }; + users.${common.username} = import ./hosts/${hostName}/home-manager; }; - users.${common.username} = import ./hosts/desktop/home-manager; - }; - } - { - nixpkgs.overlays = with inputs; [ - hyprpanel.overlay - ]; - } - ]; - }; + } + { + nixpkgs.overlays = with inputs; [ + hyprpanel.overlay + ]; + } + ]; + }; # # ========= Formatting ========= diff --git a/hosts/desktop/default.nix b/hosts/desktop/default.nix index 73c5636..ef3c46f 100644 --- a/hosts/desktop/default.nix +++ b/hosts/desktop/default.nix @@ -51,7 +51,7 @@ vlc vdhcoapp # TODO run "vdhcoapp install" on startup onlyoffice-desktopeditors - inputs.grayjay.packages.${pkgs.system}.grayjay + inputs.grayjay.packages.${system}.grayjay ]; nix.settings.experimental-features = [ diff --git a/hosts/desktop/flake.nix b/hosts/desktop/flake.nix deleted file mode 100644 index 869ed37..0000000 --- a/hosts/desktop/flake.nix +++ /dev/null @@ -1,74 +0,0 @@ -{ - description = "NixOS configuration"; - - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; - nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; - - home-manager = { - url = "github:nix-community/home-manager/release-24.11"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - }; - - outputs = - inputs@{ - self, - nixpkgs, - nixpkgs-unstable, - home-manager, - ... - }: - let - system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; - inherit (self) outputs; - common = import ./common.nix; - theme = import ../shared/theme.nix; - in - { - defaultPackage.${system} = home-manager.defaultPackage.${system}; - - # Adds the nix fmt command to format nix files - formatter.${system} = pkgs.nixfmt-rfc-style; - - nixosConfigurations.${common.hostname} = nixpkgs.lib.nixosSystem { - system = system; - specialArgs = { - inherit - outputs - inputs - common - theme - ; - }; # Pass args to modules - modules = [ - ./configuration.nix - home-manager.nixosModules.home-manager - { - home-manager = { - # Backups conflicting files in case of error - backupFileExtension = "bkp"; - useGlobalPkgs = true; - useUserPackages = true; - # Passes inputs as an argument to home-manager - extraSpecialArgs = { inherit inputs common theme; }; - users.${common.username} = import ./home-manager; - }; - } - ./overlays.nix - ]; - }; - - overlays = { - # Gives access to unstable packages everywhere - unstable-packages = final: _prev: { - unstable = import nixpkgs-unstable { - system = final.system; - config.allowUnfree = true; - }; - }; - }; - }; -} diff --git a/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix b/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix index 33dd320..08add4a 100644 --- a/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix +++ b/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix @@ -19,9 +19,15 @@ # Override the final config with an arbitrary set. # Useful for overriding colors in your selected theme. - # Default: {} + # TODO fixes theming bugs in recent versions, should be removed when fixed override = { - theme.bar.menus.text = "#123ABC"; + theme = { + bar.transparent = true; + font = { + name = "${theme.nerdFont} NF"; + size = "15px"; + }; + }; }; # Configure and theme almost all options from the GUI. diff --git a/hosts/desktop/modules/networking.nix b/hosts/desktop/modules/networking.nix index f883c5a..cafa9fc 100644 --- a/hosts/desktop/modules/networking.nix +++ b/hosts/desktop/modules/networking.nix @@ -1,9 +1,9 @@ -{ common, ... }: +{ hostName, ... }: { networking = { networkmanager.enable = true; - hostName = common.hostname; + inherit hostName; # wireless.enable = true; # Enables wireless support via wpa_supplicant. }; diff --git a/hosts/desktop/overlays.nix b/hosts/desktop/overlays.nix deleted file mode 100644 index b41909f..0000000 --- a/hosts/desktop/overlays.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ inputs, ... }: - -{ - nixpkgs.overlays = with inputs; [ - hyprpanel.overlay - ]; -} diff --git a/shared/common.nix b/shared/common.nix index 86aaf2e..519a3c4 100644 --- a/shared/common.nix +++ b/shared/common.nix @@ -13,8 +13,6 @@ rec { pictures = "${dir.home}/Pictures"; }; - hostname = "desktop"; - keymaps = { layout = "gb,no"; options = "grp:alt_shift_toggle"; # Toggle using ALT + SHIFT -- 2.47.2 From 6ca92c8537e39abe45c15bc4d62b38eb7046a52c Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Sat, 12 Apr 2025 19:45:01 +0200 Subject: [PATCH 03/15] :sparkles: Added Thinkpad and pi4 configs --- flake.nix | 111 +- hosts/desktop/home-manager/default.nix | 1 - .../desktop/home-manager/hyprland/default.nix | 2 - .../home-manager/hyprland/swaync/default.nix | 461 --- .../hyprland/waybar/config/config.jsonc | 108 - .../hyprland/waybar/config/mocha.css | 37 - .../hyprland/waybar/config/style.css | 104 - .../home-manager/hyprland/waybar/default.nix | 6 - .../desktop/home-manager/wlogout/default.nix | 116 - .../home-manager/wlogout/hibernate.svg | 7 - hosts/desktop/home-manager/wlogout/lock.svg | 7 - hosts/desktop/home-manager/wlogout/logout.svg | 7 - hosts/desktop/home-manager/wlogout/reboot.svg | 7 - .../desktop/home-manager/wlogout/shutdown.svg | 7 - hosts/desktop/home-manager/wlogout/style.css | 53 - .../desktop/home-manager/wlogout/suspend.svg | 7 - hosts/pi4/default.nix | 54 + hosts/thinkpad/common.nix | 25 + hosts/thinkpad/default.nix | 69 + hosts/thinkpad/home-manager/btop.nix | 9 + hosts/thinkpad/home-manager/cava/cava.png | Bin 0 -> 2176 bytes hosts/thinkpad/home-manager/cava/default.nix | 29 + hosts/thinkpad/home-manager/cursors.nix | 16 + .../home-manager/default-applications.nix | 24 + hosts/thinkpad/home-manager/default.nix | 67 + .../home-manager/development/default.nix | 9 + .../thinkpad/home-manager/development/git.nix | 33 + .../development/nixvim/default.nix | 77 + .../thinkpad/home-manager/development/zed.nix | 57 + hosts/thinkpad/home-manager/fastfetch.nix | 60 + hosts/thinkpad/home-manager/fish.nix | 57 + hosts/thinkpad/home-manager/freetube.nix | 53 + hosts/thinkpad/home-manager/gtk.nix | 11 + .../thinkpad/home-manager/hyprland/binds.nix | 103 + .../home-manager/hyprland/default.nix | 22 + .../hyprland/hypridle/default.nix | 38 + .../hyprland/hyprlock/default.nix | 89 + .../hyprland/hyprpanel/default.nix | 123 + .../home-manager/hyprland/hyprpaper.nix | 33 + .../home-manager/hyprland/hyprshot.nix | 19 + .../home-manager/hyprland/settings.nix | 135 + hosts/thinkpad/home-manager/kitty.nix | 25 + hosts/thinkpad/home-manager/mpv.nix | 29 + hosts/thinkpad/home-manager/nextcloud.nix | 6 + hosts/thinkpad/home-manager/spicetify.nix | 35 + .../yazi/catppuccin-mocha.tmTheme | 2081 +++++++++++ hosts/thinkpad/home-manager/yazi/default.nix | 327 ++ hosts/thinkpad/home-manager/yazi/icons.nix | 3146 +++++++++++++++++ .../home-manager/zen/chrome/userChrome.css | 113 + .../home-manager/zen/chrome/userContent.css | 158 + .../home-manager/zen/chrome/zen-logo.svg | 13 + hosts/thinkpad/home-manager/zen/default.nix | 12 + hosts/thinkpad/modules/battery.nix | 6 + hosts/thinkpad/modules/bluetooth.nix | 14 + hosts/thinkpad/modules/default.nix | 19 + hosts/thinkpad/modules/development.nix | 41 + hosts/thinkpad/modules/fonts.nix | 23 + hosts/thinkpad/modules/gaming/default.nix | 12 + hosts/thinkpad/modules/gaming/steam.nix | 8 + hosts/thinkpad/modules/gnome/default.nix | 28 + hosts/thinkpad/modules/gnome/nautilus.nix | 15 + hosts/thinkpad/modules/hardware/audio.nix | 33 + hosts/thinkpad/modules/hardware/default.nix | 8 + .../modules/hardware/graphics/default.nix | 6 + .../hardware/hardware-configuration.nix | 57 + hosts/thinkpad/modules/hardware/keyboard.nix | 11 + hosts/thinkpad/modules/hyprland/default.nix | 25 + hosts/thinkpad/modules/locale.nix | 37 + hosts/thinkpad/modules/networking.nix | 23 + hosts/thinkpad/modules/nix-helper.nix | 12 + hosts/thinkpad/modules/qt.nix | 17 + hosts/thinkpad/modules/sddm.nix | 23 + hosts/thinkpad/modules/security.nix | 68 + hosts/thinkpad/modules/shell.nix | 19 + 74 files changed, 7730 insertions(+), 973 deletions(-) delete mode 100644 hosts/desktop/home-manager/hyprland/swaync/default.nix delete mode 100644 hosts/desktop/home-manager/hyprland/waybar/config/config.jsonc delete mode 100644 hosts/desktop/home-manager/hyprland/waybar/config/mocha.css delete mode 100644 hosts/desktop/home-manager/hyprland/waybar/config/style.css delete mode 100644 hosts/desktop/home-manager/hyprland/waybar/default.nix delete mode 100644 hosts/desktop/home-manager/wlogout/default.nix delete mode 100644 hosts/desktop/home-manager/wlogout/hibernate.svg delete mode 100644 hosts/desktop/home-manager/wlogout/lock.svg delete mode 100644 hosts/desktop/home-manager/wlogout/logout.svg delete mode 100644 hosts/desktop/home-manager/wlogout/reboot.svg delete mode 100644 hosts/desktop/home-manager/wlogout/shutdown.svg delete mode 100644 hosts/desktop/home-manager/wlogout/style.css delete mode 100644 hosts/desktop/home-manager/wlogout/suspend.svg create mode 100644 hosts/pi4/default.nix create mode 100644 hosts/thinkpad/common.nix create mode 100644 hosts/thinkpad/default.nix create mode 100644 hosts/thinkpad/home-manager/btop.nix create mode 100644 hosts/thinkpad/home-manager/cava/cava.png create mode 100644 hosts/thinkpad/home-manager/cava/default.nix create mode 100644 hosts/thinkpad/home-manager/cursors.nix create mode 100644 hosts/thinkpad/home-manager/default-applications.nix create mode 100644 hosts/thinkpad/home-manager/default.nix create mode 100644 hosts/thinkpad/home-manager/development/default.nix create mode 100644 hosts/thinkpad/home-manager/development/git.nix create mode 100644 hosts/thinkpad/home-manager/development/nixvim/default.nix create mode 100644 hosts/thinkpad/home-manager/development/zed.nix create mode 100644 hosts/thinkpad/home-manager/fastfetch.nix create mode 100644 hosts/thinkpad/home-manager/fish.nix create mode 100644 hosts/thinkpad/home-manager/freetube.nix create mode 100644 hosts/thinkpad/home-manager/gtk.nix create mode 100644 hosts/thinkpad/home-manager/hyprland/binds.nix create mode 100644 hosts/thinkpad/home-manager/hyprland/default.nix create mode 100644 hosts/thinkpad/home-manager/hyprland/hypridle/default.nix create mode 100644 hosts/thinkpad/home-manager/hyprland/hyprlock/default.nix create mode 100644 hosts/thinkpad/home-manager/hyprland/hyprpanel/default.nix create mode 100644 hosts/thinkpad/home-manager/hyprland/hyprpaper.nix create mode 100644 hosts/thinkpad/home-manager/hyprland/hyprshot.nix create mode 100644 hosts/thinkpad/home-manager/hyprland/settings.nix create mode 100644 hosts/thinkpad/home-manager/kitty.nix create mode 100644 hosts/thinkpad/home-manager/mpv.nix create mode 100644 hosts/thinkpad/home-manager/nextcloud.nix create mode 100644 hosts/thinkpad/home-manager/spicetify.nix create mode 100644 hosts/thinkpad/home-manager/yazi/catppuccin-mocha.tmTheme create mode 100644 hosts/thinkpad/home-manager/yazi/default.nix create mode 100644 hosts/thinkpad/home-manager/yazi/icons.nix create mode 100644 hosts/thinkpad/home-manager/zen/chrome/userChrome.css create mode 100644 hosts/thinkpad/home-manager/zen/chrome/userContent.css create mode 100644 hosts/thinkpad/home-manager/zen/chrome/zen-logo.svg create mode 100644 hosts/thinkpad/home-manager/zen/default.nix create mode 100644 hosts/thinkpad/modules/battery.nix create mode 100644 hosts/thinkpad/modules/bluetooth.nix create mode 100644 hosts/thinkpad/modules/default.nix create mode 100644 hosts/thinkpad/modules/development.nix create mode 100644 hosts/thinkpad/modules/fonts.nix create mode 100644 hosts/thinkpad/modules/gaming/default.nix create mode 100644 hosts/thinkpad/modules/gaming/steam.nix create mode 100644 hosts/thinkpad/modules/gnome/default.nix create mode 100644 hosts/thinkpad/modules/gnome/nautilus.nix create mode 100644 hosts/thinkpad/modules/hardware/audio.nix create mode 100644 hosts/thinkpad/modules/hardware/default.nix create mode 100644 hosts/thinkpad/modules/hardware/graphics/default.nix create mode 100644 hosts/thinkpad/modules/hardware/hardware-configuration.nix create mode 100644 hosts/thinkpad/modules/hardware/keyboard.nix create mode 100644 hosts/thinkpad/modules/hyprland/default.nix create mode 100644 hosts/thinkpad/modules/locale.nix create mode 100644 hosts/thinkpad/modules/networking.nix create mode 100644 hosts/thinkpad/modules/nix-helper.nix create mode 100644 hosts/thinkpad/modules/qt.nix create mode 100644 hosts/thinkpad/modules/sddm.nix create mode 100644 hosts/thinkpad/modules/security.nix create mode 100644 hosts/thinkpad/modules/shell.nix diff --git a/flake.nix b/flake.nix index b37c184..03f7a5b 100644 --- a/flake.nix +++ b/flake.nix @@ -78,6 +78,17 @@ lib = nixpkgs.lib.extend customLib; libHm = home-manager.lib.extend customLib; + systems = [ + { + hostName = "desktop"; + system = "x86_64-linux"; + } + { + hostName = "thinkpad"; + system = "x86_64-linux"; + } + ]; + in { # @@ -89,51 +100,65 @@ # # ========= Host Configurations ========= # - nixosConfigurations.desktop = - let - hostName = "desktop"; - in - nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = { - inherit - outputs - inputs - common - theme - lib - hostName - ; - isDarwin = false; - }; - modules = [ - ./hosts/desktop - home-manager.nixosModules.home-manager - { - home-manager = { - # Backups conflicting files in case of error - backupFileExtension = "bkp"; - useGlobalPkgs = true; - useUserPackages = true; - extraSpecialArgs = { - inherit - inputs - common - theme - libHm - hostName - ; - }; - users.${common.username} = import ./hosts/${hostName}/home-manager; + nixosConfigurations = builtins.listToAttrs ( + builtins.map ( + { + hostName, + system, + user ? { + name = common.username; + password = "temp"; + }, + version ? common.version, + }: + { + name = hostName; + value = nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = { + inherit + outputs + inputs + common + theme + lib + hostName + version + ; + isDarwin = false; }; - } - { - nixpkgs.overlays = with inputs; [ - hyprpanel.overlay + modules = [ + ./hosts/${hostName} + home-manager.nixosModules.home-manager + { + home-manager = { + # Backups conflicting files in case of error + backupFileExtension = "bkp"; + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { + inherit + inputs + common + theme + libHm + hostName + version + ; + }; + users.${user.name} = import ./hosts/${hostName}/home-manager; + }; + } + { + nixpkgs.overlays = with inputs; [ + hyprpanel.overlay + ]; + } ]; - } - ]; - }; + }; + } + ) systems + ); # # ========= Formatting ========= diff --git a/hosts/desktop/home-manager/default.nix b/hosts/desktop/home-manager/default.nix index db18a80..b555ebf 100644 --- a/hosts/desktop/home-manager/default.nix +++ b/hosts/desktop/home-manager/default.nix @@ -25,7 +25,6 @@ in ./media ./nextcloud.nix ./rofi - ./wlogout ./hyprland ./spicetify.nix ./yazi diff --git a/hosts/desktop/home-manager/hyprland/default.nix b/hosts/desktop/home-manager/hyprland/default.nix index 9969757..8763716 100644 --- a/hosts/desktop/home-manager/hyprland/default.nix +++ b/hosts/desktop/home-manager/hyprland/default.nix @@ -2,14 +2,12 @@ { imports = [ ./binds.nix - ./waybar ./hypridle ./hyprlock ./hyprpanel ./hyprpaper.nix ./hyprshot.nix ./settings.nix - ./swaync ]; wayland.windowManager.hyprland = { diff --git a/hosts/desktop/home-manager/hyprland/swaync/default.nix b/hosts/desktop/home-manager/hyprland/swaync/default.nix deleted file mode 100644 index 49986b8..0000000 --- a/hosts/desktop/home-manager/hyprland/swaync/default.nix +++ /dev/null @@ -1,461 +0,0 @@ -{ lib, theme, ... }: - -{ - services.swaync = { - enable = false; - style = lib.mkDefault '' - * { - all: unset; - font-size: 14px; - font-family: "${theme.nerdFont} Nerd Font", monospace; - transition: 200ms; - } - - trough highlight { - background: #${theme.textAlpha}; - } - - scale trough { - margin: 0 1rem; - background-color: #${theme.surface0Alpha}; - min-height: 8px; - min-width: 70px; - } - - slider { - background-color: #${theme.blueAlpha}; - } - - .floating-notifications.background .notification-row .notification-background { - box-shadow: - 0 0 8px 0 rgba(0, 0, 0, 0.8), - inset 0 0 0 1px #${theme.surface0Alpha}; - border-radius: 12.6px; - margin: 18px; - background-color: #${theme.baseAlpha}; - color: #${theme.textAlpha}; - padding: 0; - } - - .floating-notifications.background - .notification-row - .notification-background - .notification { - padding: 7px; - border-radius: 12.6px; - } - - .floating-notifications.background - .notification-row - .notification-background - .notification.critical { - box-shadow: inset 0 0 7px 0 #${theme.redAlpha}; - } - - .floating-notifications.background - .notification-row - .notification-background - .notification - .notification-content { - margin: 7px; - } - - .floating-notifications.background - .notification-row - .notification-background - .notification - .notification-content - .summary { - color: #${theme.textAlpha}; - } - - .floating-notifications.background - .notification-row - .notification-background - .notification - .notification-content - .time { - color: #${theme.subtext0Alpha}; - } - - .floating-notifications.background - .notification-row - .notification-background - .notification - .notification-content - .body { - color: #${theme.textAlpha}; - } - - .floating-notifications.background - .notification-row - .notification-background - .notification - > *:last-child - > * { - min-height: 3.4em; - } - - .floating-notifications.background - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action { - border-radius: 7px; - color: #${theme.textAlpha}; - background-color: #${theme.surface0Alpha}; - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - margin: 7px; - } - - .floating-notifications.background - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action:hover { - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - background-color: #${theme.surface0Alpha}; - color: #${theme.textAlpha}; - } - - .floating-notifications.background - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action:active { - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - background-color: #${theme.sapphireAlpha}; - color: #${theme.textAlpha}; - } - - /* Close Button */ - .floating-notifications.background - .notification-row - .notification-background - .close-button { - margin: 7px; - padding: 2px; - border-radius: 6.3px; - color: #${theme.baseAlpha}; - background-color: #${theme.redAlpha}; - } - - .floating-notifications.background - .notification-row - .notification-background - .close-button:hover { - background-color: #${theme.maroonAlpha}; - color: #${theme.baseAlpha}; - } - - .floating-notifications.background - .notification-row - .notification-background - .close-button:active { - background-color: #${theme.redAlpha}; - color: #${theme.baseAlpha}; - } - - .control-center { - box-shadow: - 0 0 8px 0 rgba(0, 0, 0, 0.8), - inset 0 0 0 1px #${theme.surface0Alpha}; - border-radius: 12.6px; - margin: 18px; - background-color: #${theme.baseAlpha}; - color: #${theme.textAlpha}; - padding: 14px; - } - - .control-center .widget-title > label { - color: #${theme.textAlpha}; - font-size: 1.3em; - } - - .control-center .widget-title button { - border-radius: 7px; - color: #${theme.textAlpha}; - background-color: #${theme.surface0Alpha}; - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - padding: 8px; - } - - .control-center .widget-title button:hover { - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - background-color: #585b70; - color: #${theme.textAlpha}; - } - - .control-center .widget-title button:active { - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - background-color: #${theme.sapphireAlpha}; - color: #${theme.baseAlpha}; - } - - .control-center .notification-row .notification-background { - border-radius: 7px; - color: #${theme.textAlpha}; - background-color: #${theme.surface0Alpha}; - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - margin-top: 14px; - } - - .control-center .notification-row .notification-background .notification { - padding: 7px; - border-radius: 7px; - } - - .control-center - .notification-row - .notification-background - .notification.critical { - box-shadow: inset 0 0 7px 0 #${theme.redAlpha}; - } - - .control-center - .notification-row - .notification-background - .notification - .notification-content { - margin: 7px; - } - - .control-center - .notification-row - .notification-background - .notification - .notification-content - .summary { - color: #${theme.textAlpha}; - } - - .control-center - .notification-row - .notification-background - .notification - .notification-content - .time { - color: #a6adc8; - } - - .control-center - .notification-row - .notification-background - .notification - .notification-content - .body { - color: #${theme.textAlpha}; - } - - .control-center - .notification-row - .notification-background - .notification - > *:last-child - > * { - min-height: 3.4em; - } - - .control-center - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action { - border-radius: 7px; - color: #${theme.textAlpha}; - background-color: #${theme.crustAlpha}; - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - margin: 7px; - } - - .control-center - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action:hover { - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - background-color: #${theme.surface0Alpha}; - color: #${theme.textAlpha}; - } - - .control-center - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action:active { - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - background-color: #${theme.sapphireAlpha}; - color: #${theme.textAlpha}; - } - - .control-center .notification-row .notification-background .close-button { - margin: 7px; - padding: 2px; - border-radius: 6.3px; - color: #${theme.baseAlpha}; - background-color: #${theme.maroonAlpha}; - } - - .close-button { - border-radius: 6.3px; - } - - .control-center .notification-row .notification-background .close-button:hover { - background-color: #${theme.redAlpha}; - color: #${theme.baseAlpha}; - } - - .control-center - .notification-row - .notification-background - .close-button:active { - background-color: #${theme.redAlpha}; - color: #${theme.baseAlpha}; - } - - .control-center .notification-row .notification-background:hover { - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - background-color: #${theme.overlay1Alpha}; - color: #${theme.textAlpha}; - } - - .control-center .notification-row .notification-background:active { - box-shadow: inset 0 0 0 1px #${theme.surface1Alpha}; - background-color: #${theme.sapphireAlpha}; - color: #${theme.textAlpha}; - } - - .notification.critical progress { - background-color: #${theme.redAlpha}; - } - - .notification.low progress, - .notification.normal progress { - background-color: #${theme.blueAlpha}; - } - - .control-center-dnd { - margin-top: 5px; - border-radius: 8px; - background: #${theme.surface0Alpha}; - border: 1px solid #${theme.surface1Alpha}; - box-shadow: none; - } - - .control-center-dnd:checked { - background: #${theme.surface0Alpha}; - } - - .control-center-dnd slider { - background: #${theme.surface1Alpha}; - border-radius: 8px; - } - - .widget-dnd { - margin: 0px; - font-size: 1.1rem; - } - - .widget-dnd > switch { - font-size: initial; - border-radius: 8px; - background: #${theme.surface0Alpha}; - border: 1px solid #${theme.surface1Alpha}; - box-shadow: none; - } - - .widget-dnd > switch:checked { - background: #${theme.surface0Alpha}; - } - - .widget-dnd > switch slider { - background: #${theme.surface1Alpha}; - border-radius: 8px; - border: 1px solid #${theme.overlay0Alpha}; - } - - .widget-mpris .widget-mpris-player { - background: #${theme.surface0Alpha}; - padding: 7px; - } - - .widget-mpris .widget-mpris-title { - font-size: 1.2rem; - } - - .widget-mpris .widget-mpris-subtitle { - font-size: 0.8rem; - } - - .widget-menubar > box > .menu-button-bar > button > label { - font-size: 3rem; - padding: 0.5rem 2rem; - } - - .widget-menubar > box > .menu-button-bar > :last-child { - color: #${theme.redAlpha}; - } - - .power-buttons button:hover, - .powermode-buttons button:hover, - .screenshot-buttons button:hover { - background: #${theme.surface0Alpha}; - } - - .control-center .widget-label > label { - color: #${theme.textAlpha}; - font-size: 2rem; - } - - .widget-buttons-grid { - padding-top: 1rem; - } - - .widget-buttons-grid > flowbox > flowboxchild > button label { - font-size: 2.5rem; - } - - .widget-volume { - padding-top: 1rem; - } - - .widget-volume label { - font-size: 1.5rem; - color: #${theme.sapphireAlpha}; - } - - .widget-volume trough highlight { - background: #${theme.sapphireAlpha}; - } - - .widget-backlight trough highlight { - background: #${theme.yellowAlpha}; - } - - .widget-backlight label { - font-size: 1.5rem; - color: #${theme.yellowAlpha}; - } - - .widget-backlight .KB { - padding-bottom: 1rem; - } - - .image { - padding-right: 0.5rem; - } - ''; - }; -} diff --git a/hosts/desktop/home-manager/hyprland/waybar/config/config.jsonc b/hosts/desktop/home-manager/hyprland/waybar/config/config.jsonc deleted file mode 100644 index 8c09f42..0000000 --- a/hosts/desktop/home-manager/hyprland/waybar/config/config.jsonc +++ /dev/null @@ -1,108 +0,0 @@ -{ - "layer": "top", - // Waybar at top layer - "position": "top", - // Waybar position (top|bottom|left|right) - // "width": 1280, // Waybar width - // Choose the order of the modules - "modules-left": ["hyprland/workspaces", "custom/music"], - "modules-center": ["hyprland/window"], - "modules-right": [ - "hyprland/language", - "wireplumber", - "backlight", - "clock", - "custom/notification", - "tray", - "custom/lock", - "custom/power" - ], - "hyprland/workspaces": { - "disable-scroll": false, - "sort-by-name": true, - "format": " {id} " - }, - "hyprland/window": { - "format": "{initialTitle}" - }, - "tray": { - "icon-size": 21, - "spacing": 10 - }, - // TODO better music module - "custom/music": { - "format": "󰓃 {}", - "escape": true, - "interval": 5, - "tooltip": false, - "exec": "playerctl metadata --format='{{ title }}'", - "on-click": "playerctl play-pause", - "max-length": 50 - }, - "clock": { - "timezone": "Europe/Oslo", - "tooltip-format": "{:%Y %B}\n{calendar}", - "format": " {:%H:%M  %d/%m}", - "calendar": { - "mode": "month", - "weeks-pos": "left", - "format": { - "months": "{}", - "days": "{}", - "weeks": "W{}", - "weekdays": "{}", - "today": "{}" - } - } - }, - "backlight": { - "device": "intel_backlight", - "format": "{icon}", - "format-icons": ["", "", "", "", "", "", "", "", ""] - }, - "wireplumber": { - // "scroll-step": 1, // %, can be a float - "format": "{icon} {volume}%", - "format-muted": " ", - "format-icons": { - "default": ["", " ", " "] - }, - "on-click": "pavucontrol" - }, - "hyprland/language": { - "format-en": "EN", - "format-no": "NO", - "keyboard-name": "logitech-logitech-g710-keyboard", - "on-click": "hyprctl switchxkblayout logitech-logitech-g710-keyboard next" - }, - "custom/lock": { - "tooltip": false, - "on-click": "sh -c '(sleep 0.5s; hyprlock)'", - "format": "" - }, - "custom/power": { - "tooltip": false, - "on-click": "wlogout &", - "format": " " - }, - "custom/notification": { - "tooltip": false, - "format": "{icon}", - "format-icons": { - "notification": "", - "none": "", - "dnd-notification": "", - "dnd-none": "", - "inhibited-notification": "", - "inhibited-none": "", - "dnd-inhibited-notification": "", - "dnd-inhibited-none": "" - }, - "return-type": "json", - "exec-if": "which swaync-client", - "exec": "swaync-client -swb", - "on-click": "swaync-client -t -sw", - "on-click-right": "swaync-client -d -sw", - "escape": true - } -} diff --git a/hosts/desktop/home-manager/hyprland/waybar/config/mocha.css b/hosts/desktop/home-manager/hyprland/waybar/config/mocha.css deleted file mode 100644 index 98e218a..0000000 --- a/hosts/desktop/home-manager/hyprland/waybar/config/mocha.css +++ /dev/null @@ -1,37 +0,0 @@ -/* -* -* Catppuccin Mocha palette -* Maintainer: rubyowo -* -*/ - -@define-color base #1e1e2e; -@define-color mantle #181825; -@define-color crust #11111b; - -@define-color text #cdd6f4; -@define-color subtext0 #a6adc8; -@define-color subtext1 #bac2de; - -@define-color surface0 #313244; -@define-color surface1 #45475a; -@define-color surface2 #585b70; - -@define-color overlay0 #6c7086; -@define-color overlay1 #7f849c; -@define-color overlay2 #9399b2; - -@define-color blue #89b4fa; -@define-color lavender #b4befe; -@define-color sapphire #74c7ec; -@define-color sky #89dceb; -@define-color teal #94e2d5; -@define-color green #a6e3a1; -@define-color yellow #f9e2af; -@define-color peach #fab387; -@define-color maroon #eba0ac; -@define-color red #f38ba8; -@define-color mauve #cba6f7; -@define-color pink #f5c2e7; -@define-color flamingo #f2cdcd; -@define-color rosewater #f5e0dc; diff --git a/hosts/desktop/home-manager/hyprland/waybar/config/style.css b/hosts/desktop/home-manager/hyprland/waybar/config/style.css deleted file mode 100644 index 77d2de3..0000000 --- a/hosts/desktop/home-manager/hyprland/waybar/config/style.css +++ /dev/null @@ -1,104 +0,0 @@ -@import "mocha.css"; - -* { - font-family: JetBrainsMono Nerd Font; - font-size: 15px; - min-height: 0; -} - -#waybar { - background: transparent; - color: @text; - margin: 5px 5px; -} - -#workspaces { - border-radius: 1rem; - background-color: @surface0; - margin: 5px 5px 5px 1rem; -} - -#workspaces button { - color: @lavender; - border-radius: 1rem; - padding: 0.4rem; -} - -#workspaces button.active { - color: @sky; - border-radius: 1rem; -} - -#workspaces button:hover { - color: @sapphire; - border-radius: 1rem; -} - -#language, -#window, -#custom-notification, -#custom-music, -#tray, -#backlight, -#clock, -#wireplumber, -#custom-lock, -#custom-power { - background-color: @surface0; - padding: 0.5rem 1rem; - margin: 5px 0; -} - -#clock { - color: @blue; -} - -#backlight { - color: @yellow; -} - -#backlight { - border-radius: 0; -} - -#language { - color: @red; - border-radius: 1rem 0 0 1rem; - margin-left: 1rem; -} - -#wireplumber { - color: @maroon; -} - -#custom-music { - color: @mauve; - border-radius: 1rem; -} - -#window { - color: @mauve; - border-radius: 1rem; -} - -#custom-lock { - border-radius: 1rem 0 0 1rem; - color: @lavender; -} - -#custom-power { - margin-right: 1rem; - border-radius: 0 1rem 1rem 0; - color: @red; -} - -#custom-notification { - margin-right: 1rem; - border-radius: 0 1rem 1rem 0; - color: @sapphire; -} - -#tray { - margin-right: 1rem; - border-radius: 1rem; -} diff --git a/hosts/desktop/home-manager/hyprland/waybar/default.nix b/hosts/desktop/home-manager/hyprland/waybar/default.nix deleted file mode 100644 index 23c50f4..0000000 --- a/hosts/desktop/home-manager/hyprland/waybar/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - home.file.".config/waybar" = { - source = ./config; - recursive = true; - }; -} diff --git a/hosts/desktop/home-manager/wlogout/default.nix b/hosts/desktop/home-manager/wlogout/default.nix deleted file mode 100644 index de89d02..0000000 --- a/hosts/desktop/home-manager/wlogout/default.nix +++ /dev/null @@ -1,116 +0,0 @@ -# Log out and shutdown menu -{ - home.file = - let - dir = ".config/wlogout"; - in - { - "${dir}/hibernate.svg".source = ./hibernate.svg; - "${dir}/lock.svg".source = ./lock.svg; - "${dir}/logout.svg".source = ./logout.svg; - "${dir}/reboot.svg".source = ./reboot.svg; - "${dir}/shutdown.svg".source = ./shutdown.svg; - "${dir}/suspend.svg".source = ./suspend.svg; - }; - - programs.wlogout = { - enable = false; - layout = [ - { - label = "lock"; - action = "sh -c '(sleep 0.5s; hyprlock)'"; - text = "Lock"; - keybind = "l"; - } - { - label = "hibernate"; - action = "systemctl hibernate"; - text = "Hibernate"; - keybind = "h"; - } - { - label = "logout"; - action = "loginctl terminate-user $USER"; - text = "Logout"; - keybind = "e"; - } - { - label = "shutdown"; - action = "systemctl poweroff"; - text = "Shutdown"; - keybind = "s"; - } - { - label = "suspend"; - action = "systemctl suspend"; - text = "Suspend"; - keybind = "u"; - } - { - label = "reboot"; - action = "systemctl reboot"; - text = "Reboot"; - keybind = "r"; - } - ]; - style = - let - theme = import ../../theme.nix; - in - '' - * { - background-image: none; - box-shadow: none; - } - - window { - background-color: rgba(30, 30, 46, 0.9); - } - - button { - border-radius: 0; - border-color: #${theme.pinkAlpha}; - text-decoration-color: #${theme.textAlpha}; - color: #${theme.textAlpha}; - background-color: #${theme.mantleAlpha}; - border-style: solid; - border-width: 1px; - background-repeat: no-repeat; - background-position: center; - background-size: 25%; - } - - button:focus, - button:active, - button:hover { - /* 20% Overlay 2, 80% mantle */ - background-color: rgb(48, 50, 66); - outline-style: none; - } - - #lock { - background-image: url("./lock.svg"); - } - - #logout { - background-image: url("./logout.svg"); - } - - #suspend { - background-image: url("./suspend.svg"); - } - - #hibernate { - background-image: url("./hibernate.svg"); - } - - #shutdown { - background-image: url("./shutdown.svg"); - } - - #reboot { - background-image: url("./reboot.svg"); - } - ''; - }; -} diff --git a/hosts/desktop/home-manager/wlogout/hibernate.svg b/hosts/desktop/home-manager/wlogout/hibernate.svg deleted file mode 100644 index 5626c72..0000000 --- a/hosts/desktop/home-manager/wlogout/hibernate.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - Svg Vector Icons : http://www.onlinewebfonts.com/icon - - diff --git a/hosts/desktop/home-manager/wlogout/lock.svg b/hosts/desktop/home-manager/wlogout/lock.svg deleted file mode 100644 index 4b629fd..0000000 --- a/hosts/desktop/home-manager/wlogout/lock.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - Svg Vector Icons : http://www.onlinewebfonts.com/icon - - diff --git a/hosts/desktop/home-manager/wlogout/logout.svg b/hosts/desktop/home-manager/wlogout/logout.svg deleted file mode 100644 index 3e0cc80..0000000 --- a/hosts/desktop/home-manager/wlogout/logout.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - Svg Vector Icons : http://www.onlinewebfonts.com/icon - - diff --git a/hosts/desktop/home-manager/wlogout/reboot.svg b/hosts/desktop/home-manager/wlogout/reboot.svg deleted file mode 100644 index c05f000..0000000 --- a/hosts/desktop/home-manager/wlogout/reboot.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - Svg Vector Icons : http://www.onlinewebfonts.com/icon - - diff --git a/hosts/desktop/home-manager/wlogout/shutdown.svg b/hosts/desktop/home-manager/wlogout/shutdown.svg deleted file mode 100644 index 6693b35..0000000 --- a/hosts/desktop/home-manager/wlogout/shutdown.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - Svg Vector Icons : http://www.onlinewebfonts.com/icon - - diff --git a/hosts/desktop/home-manager/wlogout/style.css b/hosts/desktop/home-manager/wlogout/style.css deleted file mode 100644 index 54752da..0000000 --- a/hosts/desktop/home-manager/wlogout/style.css +++ /dev/null @@ -1,53 +0,0 @@ -* { - background-image: none; - box-shadow: none; -} - -window { - background-color: rgba(30, 30, 46, 0.9); -} - -button { - border-radius: 0; - border-color: #f5c2e7; - text-decoration-color: #cdd6f4; - color: #cdd6f4; - background-color: #181825; - border-style: solid; - border-width: 1px; - background-repeat: no-repeat; - background-position: center; - background-size: 25%; -} - -button:focus, -button:active, -button:hover { - /* 20% Overlay 2, 80% mantle */ - background-color: rgb(48, 50, 66); - outline-style: none; -} - -#lock { - background-image: url("./lock.svg"); -} - -#logout { - background-image: url("./logout.svg"); -} - -#suspend { - background-image: url("./suspend.svg"); -} - -#hibernate { - background-image: url("./hibernate.svg"); -} - -#shutdown { - background-image: url("./shutdown.svg"); -} - -#reboot { - background-image: url("./reboot.svg"); -} diff --git a/hosts/desktop/home-manager/wlogout/suspend.svg b/hosts/desktop/home-manager/wlogout/suspend.svg deleted file mode 100644 index 08214b4..0000000 --- a/hosts/desktop/home-manager/wlogout/suspend.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - Svg Vector Icons : http://www.onlinewebfonts.com/icon - - diff --git a/hosts/pi4/default.nix b/hosts/pi4/default.nix new file mode 100644 index 0000000..ff19397 --- /dev/null +++ b/hosts/pi4/default.nix @@ -0,0 +1,54 @@ +{ + pkgs, + hostName, + user, + version, + ... +}: + +{ + boot = { + kernelPackages = pkgs.linuxKernel.packages.linux_rpi4; + initrd.availableKernelModules = [ + "xhci_pci" + "usbhid" + "usb_storage" + ]; + loader = { + grub.enable = false; + generic-extlinux-compatible.enable = true; + }; + }; + + environment.systemPackages = with pkgs; [ + vim + ]; + + fileSystems = { + "/" = { + device = "/dev/disk/by-label/NIXOS_SD"; + fsType = "ext4"; + options = [ "noatime" ]; + }; + }; + + hardware.enableRedistributableFirmware = true; + + networking = { + inherit hostName; + networkmanager.enable = true; + }; + + services.openssh.enable = true; + + system.stateVersion = version; + + users = { + mutableUsers = false; + users.${user.name} = { + isNormalUser = true; + password = user.password; + extraGroups = [ "wheel" ]; + }; + }; +} diff --git a/hosts/thinkpad/common.nix b/hosts/thinkpad/common.nix new file mode 100644 index 0000000..a2fd81c --- /dev/null +++ b/hosts/thinkpad/common.nix @@ -0,0 +1,25 @@ +rec { + default = { + browser = "zen"; + calculator = "gnome-calculator"; + fileManager = "nautilus"; + imageViewer = "loupe"; + lockScreen = "hyprlock"; + terminal = "kitty"; + }; + + dir = { + home = "/home/${username}"; + pictures = "${dir.home}/Pictures"; + }; + + keymaps = { + layout = "gb,no"; + options = "grp:alt_shift_toggle"; # Toggle using ALT + SHIFT + }; + + # Empty matches all + monitor1 = ""; + + username = "martin"; +} diff --git a/hosts/thinkpad/default.nix b/hosts/thinkpad/default.nix new file mode 100644 index 0000000..6f0823f --- /dev/null +++ b/hosts/thinkpad/default.nix @@ -0,0 +1,69 @@ +{ + pkgs, + outputs, + common, + ... +}: + +{ + imports = [ ./modules ]; + + nixpkgs.overlays = [ outputs.overlays.unstable-packages ]; + + # Bootloader. + boot.loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + + # Define a user account. Don't forget to set a password with 'passwd'. + users.users.${common.username} = { + isNormalUser = true; + description = common.username; + extraGroups = [ + "networkmanager" + "wheel" + ]; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + environment.sessionVariables = { + # Tells Electron apps to use Wayland + NIXOS_OZONE_WL = "1"; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + brightnessctl + wget + xdg-utils + xdg-desktop-portal + xdg-desktop-portal-gtk + unstable.protonmail-desktop + stremio + fastfetch + discord + nix-prefetch-github # Cmd to get rev and hash from GitHub + gimp + vlc + vdhcoapp + onlyoffice-desktopeditors + ]; + + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + programs.kdeconnect.enable = true; + + services = { + flatpak.enable = false; + xserver.enable = true; + }; + + system.stateVersion = common.system.version; +} diff --git a/hosts/thinkpad/home-manager/btop.nix b/hosts/thinkpad/home-manager/btop.nix new file mode 100644 index 0000000..3d146b5 --- /dev/null +++ b/hosts/thinkpad/home-manager/btop.nix @@ -0,0 +1,9 @@ +let + theme = import ../theme.nix; +in +{ + catppuccin.btop = { + enable = true; + flavor = theme.flavor; + }; +} diff --git a/hosts/thinkpad/home-manager/cava/cava.png b/hosts/thinkpad/home-manager/cava/cava.png new file mode 100644 index 0000000000000000000000000000000000000000..60cbec3da435604e346b6879c21566afb33e672d GIT binary patch literal 2176 zcmV-`2!HodNk&F^2mkw)fe#ZQHhO z+qP|-c(!f7Z`=OQHWrd2Ns6Q>`DrO)sD0@JV^1rrv8NSg$(_f3{nf56)>A&DgWZ47 zC&@oftw~yl)8m&C8|&4q9dA2pS@%c_y(tRhz%L|msz~fQNiaLH3-%l^a=;0`FojnKs!71)uEQ~z~BJNNn4+G+K&5?&BCc5y)i_e-B=#y!RSHIs{aTdIocq_WVT^yLQ<*iB(b6 znW&I4!96FYJo19Re34AzVsTR^`mb|OYxeebCMbdWi* z>myh_a@zv>O-5c?jJWuZ*WMSI)2ng4@Xsa=R{bQ zpG5lopfhm|u$M!_hrd9ok8B^w0^S1hmjhj2eYzeKkvT71{rj2GWlK?j71k!H=B7i6G zog_OxwaD(JYpP)`>PN6SCy;(4@Usa-v%J>`7;AW^8qO(>U~^6Y{m9VIE+1cb8Xsf0 zcdB8P<_I?D1k!JW_4B|9&y4lL9=bK&PuA^PQm^c!LQ1T+DfW*L~6eoW0T*g3gy zbCe+cMp!=|)(DM&D25VlPCm>WHAue^)^9m%5E>6+5Nen?O6WO6kbWb&9}yZgh<6g9 z=cpm)PyzZyf1GZfmqYfWLP7-aPAVis`sAHa>ugn@r#=v>9~lZNymykJpaOa)KroF1Glk=c= z0!+6$=N7ErR|wOGH2C#@$UD!2-U%>$80+^HKpHc=lP3+eisp@ zTODgLGrSXE+9MIH-*VU>yf<%#cLKaO!1}#|(9E0RodC@M>-P>qGjE1>0yG1x-#Y+l z%WMB>qi7IuX!W9 zGp@cL#L31_zr!UnXJD6iUQw*O^lV+IMP|;xF7K3KD~(jaPQ=Obp7x)fGqAxsnG6F3 zthaA1tMnWjypv8w-BH}F8fvepIW~AFlZ?9V?A0rQdo|X1XArfOW9T+aSyN)4cXlGS z@;Dj(F7I@ji-q3ViMEx;xoyi9vN<+-=SvDMl=GE6el?Ai-uaS(bM0;Gjh){4mWp$0 zhCR2_J0EvMWaFK{t(D#>!xj~{dB(Dh-pM40+VQ*M$Ug66GOV|)ElbvUXBLvW6LGbo zuYI%3JDKFJKfAWuL%X~)ADVi&Zpk9ySCx>%8HY^$Iod>_akODyOWO1R~t{L#b5bs0?1x|t9$>LnF>zN_m ziQuL{@8ofA%e-teyb~aeo_CUwf|%i*2(D8`pyi!(0wrRGcOnco9N$xc-U%>lYiTjV zI}z&j$JbP#cLLPyGPjuFoe1?$pmze)ADiKw0BJz)DbPCshNsN%P6RgvdMAK8WrlYmxGB&(0o*C9p9eF@I|T%^yb~Y| z=$$-iuzmvakar4@Yk4P67SKCcvS9sM06uO2eEePjRHmO=Gar^*`r@5TnCp+g93XxI z6(CAD^67_nGT|4>3b&;3g)cn`^5G-=W4Gb?g#`f1Y$FI?<9lF(f3X& z0P4i0{cobJ&biL-h`%`mJ_+OrFd~mlre+wzkvVSjA^g61=P3-e%fB92R)TdIm=*(v zePMu35FC&>fgF{^dZ$(wEJ3s8N9KgGSoY65O`v=%Q2PkX2_l2Wo>rLs^G+l9byw-! z_&JaJM@Qh-{&}Yn{JQXb6Q`p#%gqT?_dEAH%U^%(pLZI;uaCVM%2S4RnPSuG{qs&! z{`2C~Ff>cKr{3BwofTd^i28?kXFC?e46@S+B2ucPe3NpQ{X{tot5O-d`gEUEqq>w= zh<66c93xOqcnf340n%5)ZA6;YLm5Q8Q;JtXU*}jQb$__7n z&)N2WCo=f3$Z!_!4wLJ&-3TB&3YVsOvmo z*bhT_DAe}Ao%QEe6g%`sryZSZyYxQoGWf_Qt;0fAoWU%Mq{OhRi}jS&Q(8~?fIlS_ CgfUbA literal 0 HcmV?d00001 diff --git a/hosts/thinkpad/home-manager/cava/default.nix b/hosts/thinkpad/home-manager/cava/default.nix new file mode 100644 index 0000000..661c02b --- /dev/null +++ b/hosts/thinkpad/home-manager/cava/default.nix @@ -0,0 +1,29 @@ +## Audio visualizer +{ pkgs, ... }: + +let + theme = import ../../theme.nix; +in +{ + catppuccin.cava = { + enable = true; + flavor = theme.flavor; + }; + + programs.cava = { + enable = true; + package = pkgs.cava; + }; + + xdg.desktopEntries.cava = { + name = "Cava"; + genericName = "Audio visualizer"; + terminal = true; + exec = "${pkgs.cava}/bin/cava"; + icon = ./cava.png; + categories = [ + "Audio" + "AudioVideo" + ]; + }; +} diff --git a/hosts/thinkpad/home-manager/cursors.nix b/hosts/thinkpad/home-manager/cursors.nix new file mode 100644 index 0000000..d0ad7b9 --- /dev/null +++ b/hosts/thinkpad/home-manager/cursors.nix @@ -0,0 +1,16 @@ +let + theme = import ../theme.nix; +in +{ + catppuccin.cursors = { + enable = true; + flavor = theme.flavor; + accent = "dark"; + }; + + home.pointerCursor = { + gtk.enable = true; + x11.enable = true; + size = 16; + }; +} diff --git a/hosts/thinkpad/home-manager/default-applications.nix b/hosts/thinkpad/home-manager/default-applications.nix new file mode 100644 index 0000000..d3f3e7f --- /dev/null +++ b/hosts/thinkpad/home-manager/default-applications.nix @@ -0,0 +1,24 @@ +# TODO more defaults +{ + xdg.mimeApps = { + enable = true; + defaultApplications = + let + browser = "zen.desktop"; + imageViewer = "org.gnome.Loupe.desktop"; + pdfReader = "org.gnome.Papers.desktop"; + in + { + "text/html" = browser; + "x-scheme-handler/http" = browser; + "x-scheme-handler/https" = browser; + "x-scheme-handler/about" = browser; + "x-scheme-handler/unknown" = browser; + "image/jpg" = imageViewer; + "image/jpeg" = imageViewer; + "image/png" = imageViewer; + "image/gif" = imageViewer; + "application/pdf" = pdfReader; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/default.nix b/hosts/thinkpad/home-manager/default.nix new file mode 100644 index 0000000..c32b866 --- /dev/null +++ b/hosts/thinkpad/home-manager/default.nix @@ -0,0 +1,67 @@ +{ + pkgs, + inputs, + ... +}: +let + common = import ../common.nix; + username = common.username; + dir = common.dir; +in +{ + imports = [ + inputs.catppuccin.homeManagerModules.catppuccin + ./btop.nix + ./cava + ./cursors.nix + ./default-applications.nix + ./development + ./fastfetch.nix + ./fish.nix + ./freetube.nix + ./gtk.nix + ./kitty.nix + ./mpv.nix + ./nextcloud.nix + ./hyprland + ./spicetify.nix + ./yazi + ./zen + ]; + + dconf = { + enable = true; + settings = { + # Prefer dark mode for all GTK apps + "org/gnome/desktop/interface".color-scheme = "prefer-dark"; + }; + }; + + home = { + username = username; + homeDirectory = dir.home; + + sessionVariables = { + XDG_PICTURES_DIR = dir.pictures; # Define the default dir for pictures + }; + + # You can update Home Manager without changing this value. See + # the Home Manager release notes for a list of state version + # changes in each release. + stateVersion = common.system.version; + }; + + programs = { + btop.enable = true; + + # Let Home Manager install and manage itself. + home-manager.enable = true; + }; + + services = { + gpg-agent = { + enable = true; + pinentryPackage = pkgs.pinentry-curses; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/development/default.nix b/hosts/thinkpad/home-manager/development/default.nix new file mode 100644 index 0000000..ed66da1 --- /dev/null +++ b/hosts/thinkpad/home-manager/development/default.nix @@ -0,0 +1,9 @@ +{ + imports = [ + ./git.nix + ./nixvim + ./zed.nix + ]; + # TODO set Wayland vmOptions in Jetbrains products, Requires current installed version in path + # -Dawt.toolkit.name=WLToolKit +} diff --git a/hosts/thinkpad/home-manager/development/git.nix b/hosts/thinkpad/home-manager/development/git.nix new file mode 100644 index 0000000..11b4a4d --- /dev/null +++ b/hosts/thinkpad/home-manager/development/git.nix @@ -0,0 +1,33 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ git-crypt ]; + + programs.git = + let + package = pkgs.git.override { withLibsecret = true; }; + in + { + enable = true; + package = package; + userName = "Martin Berg Alstad"; + userEmail = "git@martials.no"; + + aliases = { + amend = "commit --amend"; + cm = "commit"; + s = "status"; + }; + + signing = { + signByDefault = true; + key = "848D71DE0590C199"; + }; + + extraConfig = { + push.autoSetupRemote = true; + safe.directory = "/etc/nixos"; + credential.helper = "${package}/bin/git-credential-libsecret"; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/development/nixvim/default.nix b/hosts/thinkpad/home-manager/development/nixvim/default.nix new file mode 100644 index 0000000..1bccf09 --- /dev/null +++ b/hosts/thinkpad/home-manager/development/nixvim/default.nix @@ -0,0 +1,77 @@ +# Neovim configuration for Nix +{ inputs, ... }: + +{ + imports = [ + inputs.nixvim.homeManagerModules.nixvim + ]; + + catppuccin.nvim.enable = true; + + home.sessionVariables.EDITOR = "nvim"; + + programs.nixvim = { + enable = true; + clipboard.providers.wl-copy.enable = true; + colorschemes.catppuccin.enable = true; + defaultEditor = true; + vimdiffAlias = true; # Alias vimdiff to nvim -d + + opts = { + number = true; # Show line numbers + relativenumber = true; # Show relative line numbers + + shiftwidth = 2; # Tab width should be 2 + }; + + plugins = { + bufferline.enable = false; + + # Formatters + conform-nvim = { + enable = true; + # TODO use nix fmt on save + settings = { }; + }; + + lsp = { + enable = true; + servers = { + nixd.enable = true; + }; + }; + + lualine.enable = true; + luasnip.enable = true; + + # Completions + cmp = { + enable = true; + + autoEnableSources = true; + + # TODO complete on + settings = { + sources = [ + { name = "nvim-lsp"; } + { name = "path"; } + { name = "buffer"; } + ]; + }; + }; + + treesitter.enable = true; + web-devicons.enable = true; + }; + + extraConfigLua = '' + -- Translucent background + vim.cmd [[ + highlight Normal guibg=none + highlight NonText guibg=none + highlight Normal ctermbg=none + highlight NonText ctermbg=none + ]] + ''; + }; +} diff --git a/hosts/thinkpad/home-manager/development/zed.nix b/hosts/thinkpad/home-manager/development/zed.nix new file mode 100644 index 0000000..12c45b8 --- /dev/null +++ b/hosts/thinkpad/home-manager/development/zed.nix @@ -0,0 +1,57 @@ +{ pkgs, ... }: + +{ + programs.zed-editor = { + enable = true; + package = pkgs.unstable.zed-editor; + extensions = [ + "html" + "catppuccin" + "catppuccin-icons" + "toml" + "nix" + "git-firefly" + "just" + ]; + userSettings = + let + theme = import ../../theme.nix; + font = "${theme.nerdFont} Nerd Font"; + fontSize = 14; + in + { + assistant = { + default_model = { + provider = "ollama"; + model = "deepseek-r1:8b"; + }; + version = "2"; + }; + autosave = "on_focus_change"; + base_keymap = "JetBrains"; + buffer_font_family = font; + features = { + edit_completion_provider = "zed"; + }; + icon_theme = "Catppuccin Mocha"; + # icon_theme = { TODO replace icon theme above with below + # mode = theme.mode; + # light = "Catppuccin Mocha"; + # dark = "Catppuccin Mocha"; + # }; + ui_font_family = font; + ui_font_size = fontSize; + buffer_font_size = fontSize; + tabs = { + file_icons = true; + git_status = true; + }; + theme = { + mode = theme.mode; + light = "Catppuccin Latte"; + dark = "Catppuccin Mocha"; + }; + lsp.nil.initialization_options.formatting.command = [ "nixfmt" ]; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/fastfetch.nix b/hosts/thinkpad/home-manager/fastfetch.nix new file mode 100644 index 0000000..3da66cf --- /dev/null +++ b/hosts/thinkpad/home-manager/fastfetch.nix @@ -0,0 +1,60 @@ +{ + programs = { + fish.shellAliases.fetch = "fastfetch"; + fastfetch = { + enable = true; + settings = { + logo = { + source = "${../Catppuccin.png}"; + type = "kitty"; + height = 18; + padding.top = 2; + }; + display.separator = " "; + modules = + let + keyColor = "34"; + module = type: key: { + inherit type key keyColor; + }; + formatModule = type: key: format: { + inherit + type + key + format + keyColor + ; + }; + in + [ + "break" + "break" + { + type = "title"; + keyWidth = 10; + } + "break" + (module "os" " ") + (module "kernel" " ") + (formatModule "packages" " " "{} (nixpkgs)") + (module "shell" " ") + (module "terminal" " ") + (module "wm" " ") + (module "theme" " ") + (module "cursor" " ") + (module "terminalfont" " ") + (module "uptime" " ") + (formatModule "datetime" " " "{1}-{3}-{11}") + (module "cpu" " ") + (module "gpu" "󰤽 ") + (module "sound" " ") + (module "lm" " ") + "break" + "colors" + "break" + "break" + ]; + }; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/fish.nix b/hosts/thinkpad/home-manager/fish.nix new file mode 100644 index 0000000..7611f35 --- /dev/null +++ b/hosts/thinkpad/home-manager/fish.nix @@ -0,0 +1,57 @@ +{ pkgs, ... }: +let + theme = import ../theme.nix; +in +{ + catppuccin = { + fish = { + enable = true; + flavor = theme.flavor; + }; + starship = { + enable = true; + flavor = theme.flavor; + }; + }; + + programs = { + fish = { + enable = true; + # Start starship when creating a new shell + interactiveShellInit = '' + starship init fish | source + ${pkgs.fortune}/bin/fortune | ${pkgs.cowsay}/bin/cowsay -f tux + ''; + plugins = [ + { + # !! to get the previous command + # https://github.com/BrewingWeasel/fishbang + name = "fishbang"; + src = pkgs.fetchFromGitHub { + owner = "BrewingWeasel"; + repo = "fishbang"; + rev = "50389667eb9ac79edcff9b987c83e1de8ac93921"; + hash = "sha256-IneNWyfo29C7FDA5b6pTZRX3HpP6y/dRM6GXuLq2+zc="; + }; + } + ]; + shellAliases = { + nix-shell = "nix-shell --run fish"; # Start nix-shells using fishcd + }; + }; + + starship = { + enable = true; + settings = { + directory.substitutions = { + "Documents" = "󰈙 "; + "Downloads" = " "; + "Music" = "󰓃 "; + "Pictures" = " "; + "Git" = " "; + "nextcloud" = " "; + }; + }; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/freetube.nix b/hosts/thinkpad/home-manager/freetube.nix new file mode 100644 index 0000000..aad9f56 --- /dev/null +++ b/hosts/thinkpad/home-manager/freetube.nix @@ -0,0 +1,53 @@ +{ pkgs, ... }: + +{ + catppuccin.freetube.enable = true; + + programs.freetube = { + enable = true; + package = pkgs.unstable.freetube; + settings = { + allowDashAv1Formats = true; + checkForUpdates = false; + currentLocale = "en-GB"; + defaultTheatreMode = true; + defaultQuality = "1080"; + displayVideoPlayButton = false; + region = "NO"; + useSponsorBlock = true; + + sponsorBlockSponsor = { + color = "CatppuccinMochaGreen"; + skip = "autoSkip"; + }; + sponsorBlockSelfPromo = { + color = "CatppuccinMochaYellow"; + skip = "showInSeekBar"; + }; + sponsorBlockInteraction = { + color = "CatppuccinMochaPink"; + skip = "showInSeekBar"; + }; + sponsorBlockIntro = { + color = "CatppuccinMochaSapphire"; + skip = "doNothing"; + }; + sponsorBlockOutro = { + color = "CatppuccinMochaBlue"; + skip = "doNothing"; + }; + sponsorBlockRecap = { + color = "CatppuccinMochaMauve"; + skip = "doNothing"; + }; + sponsorBlockMusicOffTopic = { + color = "CatppuccinMochaFlamingo"; + skip = "doNothing"; + }; + sponsorBlockFiller = { + color = "CatppuccinMochaMauve"; + skip = "doNothing"; + }; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/gtk.nix b/hosts/thinkpad/home-manager/gtk.nix new file mode 100644 index 0000000..4a766d8 --- /dev/null +++ b/hosts/thinkpad/home-manager/gtk.nix @@ -0,0 +1,11 @@ +let + theme = import ../theme.nix; +in +{ + gtk.enable = true; + catppuccin.gtk = { + enable = true; + flavor = theme.flavor; + icon.enable = true; + }; +} diff --git a/hosts/thinkpad/home-manager/hyprland/binds.nix b/hosts/thinkpad/home-manager/hyprland/binds.nix new file mode 100644 index 0000000..d9e3b82 --- /dev/null +++ b/hosts/thinkpad/home-manager/hyprland/binds.nix @@ -0,0 +1,103 @@ +let + common = import ../../common.nix; + app = common.default; +in +{ + # TODO binds to move focused window + wayland.windowManager.hyprland.settings = { + "$mainMod" = "SUPER"; + "$shiftMod" = "$mainMod SHIFT"; + "$ctrlMod" = "$mainMod CTRL"; + "$menu" = "rofi -show drun"; + + bind = [ + "$mainMod, Q, exec, ${app.terminal}" + "$mainMod, C, killactive," + "$shiftMod, M, exit," + "$mainMod, E, exec, ${app.fileManager}" + "$mainMod, V, togglefloating," + "$mainMod, R, exec, $menu" + "$mainMod, P, pseudo," # dwindle + "$mainMod, J, togglesplit," # dwindle + "$mainMod, B, exec, ${app.browser}" + "$mainMod, L, exec, ${app.lockScreen}" + "$mainMod, K, exec, [float] ${app.calculator}" + "$mainMod, ESCAPE, exec, hyprpanel t dashboardmenu" + + # Move focus with mainMod + arrow keys + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + + # Move window with ctrl + mainMod + arrow keys + "$ctrlMod, left, movewindow, l" + "$ctrlMod, right, movewindow, r" + "$ctrlMod, up, movewindow, u" + "$ctrlMod, down, movewindow, d" + + # Switch workspaces with mainMod + [0-9] + "$mainMod, 1, workspace, 1" + "$mainMod, 2, workspace, 2" + "$mainMod, 3, workspace, 3" + "$mainMod, 4, workspace, 4" + "$mainMod, 5, workspace, 5" + "$mainMod, 6, workspace, 6" + "$mainMod, 7, workspace, 7" + "$mainMod, 8, workspace, 8" + "$mainMod, 9, workspace, 9" + "$mainMod, 0, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "$shiftMod, 1, movetoworkspace, 1" + "$shiftMod, 2, movetoworkspace, 2" + "$shiftMod, 3, movetoworkspace, 3" + "$shiftMod, 4, movetoworkspace, 4" + "$shiftMod, 5, movetoworkspace, 5" + "$shiftMod, 6, movetoworkspace, 6" + "$shiftMod, 7, movetoworkspace, 7" + "$shiftMod, 8, movetoworkspace, 8" + "$shiftMod, 9, movetoworkspace, 9" + "$shiftMod, 0, movetoworkspace, 10" + + # Example special workspace (scratchpad) + "$mainMod, S, togglespecialworkspace, magic" + "$shiftMod, S, movetoworkspace, special:magic" + + # Scroll through existing workspaces with mainMod + scroll + "$mainMod, mouse_down, workspace, e+1" + "$mainMod, mouse_up, workspace, e-1" + ]; + + binde = [ + # Resize the focused window + "$shiftMod, right, resizeactive, 20 0" + "$shiftMod, left, resizeactive, -20 0" + "$shiftMod, up, resizeactive, 0 -20" + "$shiftMod, down, resizeactive, 0 20" + ]; + + bindm = [ + # Move/resize windows with mainMod + LMB/RMB and dragging + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + + bindl = [ + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPause, exec, playerctl play-pause" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioPrev, exec, playerctl previous" + ]; + + bindel = [ + # Laptop multimedia keys for volume and LCD brightness + ",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ",XF86MonBrightnessUp, exec, brightnessctl s 10%+" + ",XF86MonBrightnessDown, exec, brightnessctl s 10%-" + ]; + }; +} diff --git a/hosts/thinkpad/home-manager/hyprland/default.nix b/hosts/thinkpad/home-manager/hyprland/default.nix new file mode 100644 index 0000000..def2943 --- /dev/null +++ b/hosts/thinkpad/home-manager/hyprland/default.nix @@ -0,0 +1,22 @@ +# Home configurations for Hyprland. For system configs, see ./modules/hyprland +{ outputs, ... }: + +{ + imports = [ + ./binds.nix + ./hypridle + ./hyprlock + ./hyprpanel + ./hyprpaper.nix + ./hyprshot.nix + ./settings.nix + ]; + + # Adds pkgs.unstable in order to fetch packages from unstable repositories + nixpkgs.overlays = [ outputs.overlays.unstable-packages ]; + + wayland.windowManager.hyprland = { + enable = true; + systemd.variables = [ "--all" ]; # Import environment into systemd + }; +} diff --git a/hosts/thinkpad/home-manager/hyprland/hypridle/default.nix b/hosts/thinkpad/home-manager/hyprland/hypridle/default.nix new file mode 100644 index 0000000..69768c3 --- /dev/null +++ b/hosts/thinkpad/home-manager/hyprland/hypridle/default.nix @@ -0,0 +1,38 @@ +let + # Time in seconds + lockAfter = 1200; + screenOffAfter = 1500; + suspendAfter = 7200; +in +{ + services.hypridle = { + enable = true; + settings = { + general = { + before_sleep_cmd = "loginctl lock-session"; + after_sleep_cmd = "hyprctl dispatch dpms on"; + lock_cmd = "pidof hyprlock || hyprlock"; # Avoid running multiple instances of hyprlock + }; + + listener = [ + # Lock + { + timeout = lockAfter; + on-timeout = "loginctl lock-session"; + } + # Turn off screens + { + timeout = screenOffAfter; + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + # Suspend + { + timeout = suspendAfter; + on-timeout = "systemctl suspend"; # suspend pc + } + ]; + }; + }; + wayland.windowManager.hyprland.settings.exec-once = [ "hypridle" ]; +} diff --git a/hosts/thinkpad/home-manager/hyprland/hyprlock/default.nix b/hosts/thinkpad/home-manager/hyprland/hyprlock/default.nix new file mode 100644 index 0000000..2ff5a52 --- /dev/null +++ b/hosts/thinkpad/home-manager/hyprland/hyprlock/default.nix @@ -0,0 +1,89 @@ +{ lib, ... }: +let + theme = import ../../../theme.nix; +in +{ + programs.hyprlock = { + enable = true; + settings = { + "$font" = "${theme.nerdFont} Nerd Font"; + + background = [ + { + path = "${../../../wallpapers/catppuccin_page_curl.png}"; + } + ]; + + # GENERAL + general = { + disable_loading_bar = true; + hide_cursor = true; + }; + + # LAYOUT + label = [ + { + text = "$LAYOUT"; + color = "${theme.textRgb}"; + font_size = 25; + font_family = "$font"; + position = "30, -30"; + halign = "left"; + valign = "top"; + } + # TIME + { + text = "$TIME"; + color = "${theme.textRgb}"; + font_size = 90; + font_family = "$font"; + position = "-30, 0"; + halign = "right"; + valign = "top"; + } + # DATE + { + text = "cmd[update:43200000] date +\"%A, %d %B %Y\""; + color = "${theme.textRgb}"; + font_size = 25; + font_family = "$font"; + position = "-30, -150"; + halign = "right"; + valign = "top"; + } + ]; + + # USER AVATAR + image = { + path = "${../../face.png}"; + size = 100; + border_color = "${theme.blueRgb}"; + position = "0, 75"; + halign = "center"; + valign = "center"; + }; + + # INPUT FIELD + input-field = { + size = "300, 60"; + outline_thickness = 4; + dots_size = 0.2; + dots_spacing = 0.2; + dots_center = true; + outer_color = lib.mkDefault "${theme.blueRgb}"; + inner_color = lib.mkDefault "${theme.surface0Rgb}"; + font_color = lib.mkDefault "${theme.textRgb}"; + fade_on_empty = false; + placeholder_text = "󰌾 Logged in as $USER"; + hide_input = false; + check_color = lib.mkDefault "${theme.blueRgb}"; + fail_color = lib.mkDefault "${theme.redRgb}"; + fail_text = "$FAIL ($ATTEMPTS)"; + capslock_color = lib.mkDefault "${theme.yellowRgb}"; + position = "0, -47"; # TODO change to use % at 25.05 + halign = "center"; + valign = "center"; + }; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/hyprland/hyprpanel/default.nix b/hosts/thinkpad/home-manager/hyprland/hyprpanel/default.nix new file mode 100644 index 0000000..4b20d4a --- /dev/null +++ b/hosts/thinkpad/home-manager/hyprland/hyprpanel/default.nix @@ -0,0 +1,123 @@ +{ + pkgs, + inputs, + lib, + ... +}: +let + common = import ../../../common.nix; + theme = import ../../../theme.nix; + loader = import ../../secretsLoader.nix lib; +in +{ + imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ]; + + programs.hyprpanel = { + enable = true; + # Add hyprpanel to the Hyprland config 'exec-once'. + hyprland.enable = true; + # Fix the overwrite issue with HyprPanel. + overwrite.enable = true; + + # Import a theme from './themes/*.json'. + theme = ""; + + # Override the final config with an arbitrary set. + # Useful for overriding colors in your selected theme. + # Default: {} + override = { + theme.bar.menus.text = "#123ABC"; + }; + + # Configure bar layouts for monitors. + layout = { + "bar.layouts" = { + "*" = { + left = [ + "dashboard" + "workspaces" + "windowtitle" + ]; + middle = [ "media" ]; + right = [ + "kbinput" + "volume" + "network" + "systray" + "clock" + "battery" + "notifications" + ]; + }; + }; + }; + + # Configure and theme almost all options from the GUI. + # Options that require '{}' or '[]' are not yet implemented, + # except for the layout above. + # See 'https://hyprpanel.com/configuration/settings.html'. + # Default: + settings = { + bar = { + clock.format = "%a %b %d %H:%M"; + customModules.kbLayout.leftClick = "hyprctl switchxkblayout keychron-keychron-k8-pro next"; + launcher.autoDetectIcon = true; + network.label = false; + volume = { + scrollDown = "${pkgs.hyprpanel}/bin/hyprpanel 'vol -1'"; + scrollUp = "${pkgs.hyprpanel}/bin/hyprpanel 'vol +1'"; + }; + workspaces = { + show_icons = false; + show_numbered = true; + }; + }; + + menus = { + clock = { + time = { + military = true; + hideSeconds = true; + }; + weather = { + unit = "metric"; + location = "Bergen, Norway"; + key = loader.loadSecret ../../secrets/weather-api-key; + }; + }; + + dashboard = { + directories.enabled = false; + powermenu.avatar.image = "${../../face.png}"; + shortcuts.left = { + shortcut1 = { + command = common.default.browser; + icon = ""; # TODO replace with Zen icon + tooltip = "Zen"; + }; + shortcut2 = { + command = "spotify"; + icon = ""; + tooltip = "Spotify"; + }; + ## shortcut3 === discord + ## shortcut4 === rofi -show drun + }; + stats.enable_gpu = true; + }; + }; + + scalingPriority = "hyprland"; + + theme = { + bar.transparent = true; + font = { + name = "${theme.nerdFont} NF"; + size = "16px"; + }; + }; + + wallpaper.enable = false; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix b/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix new file mode 100644 index 0000000..bcb8c54 --- /dev/null +++ b/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix @@ -0,0 +1,33 @@ +# Wallpapers +{ pkgs, ... }: + +let + common = import ../../common.nix; +in +{ + home.packages = with pkgs; [ + hyprpaper + ]; + + services.hyprpaper = { + enable = true; + settings = + let + wallpaperDir = ../../wallpapers; + monitor1 = "${wallpaperDir}/nixos_waves.png"; + in + { + ipc = "on"; + splash = false; + splash_offset = 2.0; + + preload = [ + monitor1 + ]; + + wallpaper = [ + "${common.monitor1},${monitor1}" + ]; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/hyprland/hyprshot.nix b/hosts/thinkpad/home-manager/hyprland/hyprshot.nix new file mode 100644 index 0000000..67dbb6b --- /dev/null +++ b/hosts/thinkpad/home-manager/hyprland/hyprshot.nix @@ -0,0 +1,19 @@ +let + common = import ../../common.nix; +in +{ + wayland.windowManager.hyprland.settings = { + "$mainMod" = "SUPER"; + "$shiftMod" = "$mainMod SHIFT"; + + env = [ + "HYPRSHOT_DIR,${common.dir.pictures}/screenshots" # Store screenshots here + ]; + + bind = [ + "$mainMod, PRINT, exec, hyprshot -m window" # Window + ", PRINT, exec, hyprshot -m output" # Monitor + "$shiftMod, PRINT, exec, hyprshot -m region" # Region + ]; + }; +} diff --git a/hosts/thinkpad/home-manager/hyprland/settings.nix b/hosts/thinkpad/home-manager/hyprland/settings.nix new file mode 100644 index 0000000..92c33f5 --- /dev/null +++ b/hosts/thinkpad/home-manager/hyprland/settings.nix @@ -0,0 +1,135 @@ +{ lib, ... }: +let + common = import ../../common.nix; + theme = import ../../theme.nix; + app = common.default; +in +{ + wayland.windowManager.hyprland.settings = { + monitor = [ + "${common.monitor1}, 1920x1080@60.05, 0x0, 1" + ]; + + # Autostart + exec-once = [ + app.browser + app.terminal + "systemctl --user start hyprpolkitagent" + "hyprsunset -t 5000" # Set blue light filter + ]; + + env = [ + "ELECTRON_OZONE_PLATFORM_HINT,auto" # Tell Electron apps to use Wayland + ]; + + general = { + gaps_in = 5; + gaps_out = 20; + border_size = 2; + "col.active_border" = lib.mkDefault "${theme.mauveRgb} ${theme.tealRgb} 45deg"; + "col.inactive_border" = lib.mkDefault "rgba(${theme.surface2Alpha}aa)"; + resize_on_border = true; + allow_tearing = false; + layout = "dwindle"; + }; + + decoration = { + rounding = 10; + + # Change transparency of focused and unfocused windows + active_opacity = 1.0; + inactive_opacity = 1.0; + + shadow = { + enabled = true; + range = 4; + render_power = 3; + color = lib.mkDefault theme.baseRgb; + }; + + blur = { + enabled = true; + size = 3; + passes = 1; + + vibrancy = 0.1696; + }; + }; + + animations = { + enabled = "yes, please :)"; + + bezier = [ + "easeOutQuint,0.23,1,0.32,1" + "easeInOutCubic,0.65,0.05,0.36,1" + "linear,0,0,1,1" + "almostLinear,0.5,0.5,0.75,1.0" + "quick,0.15,0,0.1,1" + ]; + + animation = [ + "global, 1, 10, default" + "border, 1, 5.39, easeOutQuint" + "windows, 1, 4.79, easeOutQuint" + "windowsIn, 1, 4.1, easeOutQuint, popin 87%" + "windowsOut, 1, 1.49, linear, popin 87%" + "fadeIn, 1, 1.73, almostLinear" + "fadeOut, 1, 1.46, almostLinear" + "fade, 1, 3.03, quick" + "layers, 1, 3.81, easeOutQuint" + "layersIn, 1, 4, easeOutQuint, fade" + "layersOut, 1, 1.5, linear, fade" + "fadeLayersIn, 1, 1.79, almostLinear" + "fadeLayersOut, 1, 1.39, almostLinear" + "workspaces, 1, 1.94, almostLinear, fade" + "workspacesIn, 1, 1.21, almostLinear, fade" + "workspacesOut, 1, 1.94, almostLinear, fade" + ]; + }; + + dwindle = { + pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true; # You probably want this + }; + + master.new_status = "master"; + + misc = { + force_default_wallpaper = 0; + disable_hyprland_logo = true; + }; + + debug.disable_logs = false; + + input = { + kb_layout = common.keymaps.layout; + kb_options = common.keymaps.options; + follow_mouse = 1; + sensitivity = 0.4; # -1.0 - 1.0, 0 means no modification. + touchpad.natural_scroll = true; + }; + + gestures = { + workspace_swipe = true; + workspace_swipe_distance = 150; + workspace_swipe_min_speed_to_force = 0; + workspace_swipe_cancel_ratio = 0.5; + }; + + device = { + name = "logitech-g502-hero-gaming-mouse"; + sensitivity = -0.10; + }; + + windowrulev2 = [ + # Ignore maximize requests from apps + "suppressevent maximize, class:.*" + # Fix some dragging issues with XWayland + "nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0" + # Avoid locking in fullscreen + "idleinhibit fullscreen, class:^(*)$" + "idleinhibit fullscreen, title:^(*)$" + "idleinhibit fullscreen, fullscreen:1" + ]; + }; +} diff --git a/hosts/thinkpad/home-manager/kitty.nix b/hosts/thinkpad/home-manager/kitty.nix new file mode 100644 index 0000000..4316146 --- /dev/null +++ b/hosts/thinkpad/home-manager/kitty.nix @@ -0,0 +1,25 @@ +let + common = import ../common.nix; + theme = import ../theme.nix; +in +{ + catppuccin.kitty = { + enable = true; + flavor = theme.flavor; + }; + + programs = { + # Transfer shell config to target device + fish.shellAliases.ssh = "kitty +kitten ssh"; + kitty = { + enable = common.default.terminal == "kitty"; + font.name = theme.nerdFont; + settings = { + background_blur = 5; + background_opacity = 0.8; + confirm_os_window_close = 0; + window_padding_width = 10; + }; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/mpv.nix b/hosts/thinkpad/home-manager/mpv.nix new file mode 100644 index 0000000..ef88358 --- /dev/null +++ b/hosts/thinkpad/home-manager/mpv.nix @@ -0,0 +1,29 @@ +{ + catppuccin.mpv = + let + theme = import ../theme.nix; + in + { + enable = true; + flavor = theme.flavor; + }; + + programs = { + fish.shellAliases.mpvl = "mpv --profile=loop"; + mpv = { + enable = true; + config = { + hwdec = "auto-safe"; + vo = "gpu"; + profile = "gpu-hq"; + gpu-context = "wayland"; + }; + profiles = { + loop = { + loop-playlist = "inf"; + loop-file = "inf"; + }; + }; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/nextcloud.nix b/hosts/thinkpad/home-manager/nextcloud.nix new file mode 100644 index 0000000..6d6bc7c --- /dev/null +++ b/hosts/thinkpad/home-manager/nextcloud.nix @@ -0,0 +1,6 @@ +{ + services.nextcloud-client = { + enable = true; + startInBackground = true; + }; +} diff --git a/hosts/thinkpad/home-manager/spicetify.nix b/hosts/thinkpad/home-manager/spicetify.nix new file mode 100644 index 0000000..758b9dc --- /dev/null +++ b/hosts/thinkpad/home-manager/spicetify.nix @@ -0,0 +1,35 @@ +{ + pkgs, + inputs, + lib, + ... +}: + +{ + imports = [ inputs.spicetify-nix.homeManagerModules.default ]; + programs.spicetify = + let + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; + theme = import ../theme.nix; + in + { + enable = true; + + enabledExtensions = with spicePkgs.extensions; [ + adblock + fullAppDisplay + hidePodcasts + shuffle # shuffle+ (special characters are sanitized out of extension names) + ]; + enabledCustomApps = with spicePkgs.apps; [ + newReleases + ncsVisualizer + ]; + enabledSnippets = with spicePkgs.snippets; [ + pointer + ]; + + theme = lib.mkForce spicePkgs.themes.catppuccin; + colorScheme = lib.mkForce theme.flavor; + }; +} diff --git a/hosts/thinkpad/home-manager/yazi/catppuccin-mocha.tmTheme b/hosts/thinkpad/home-manager/yazi/catppuccin-mocha.tmTheme new file mode 100644 index 0000000..6bd0f29 --- /dev/null +++ b/hosts/thinkpad/home-manager/yazi/catppuccin-mocha.tmTheme @@ -0,0 +1,2081 @@ + + + + + name + Catppuccin Mocha + semanticClass + theme.dark.catppuccin-mocha + uuid + 627ce890-fabb-4d39-9819-7be71f4bdca7 + author + Catppuccin Org + colorSpaceName + sRGB + settings + + + settings + + background + #1e1e2e + foreground + #cdd6f4 + caret + #f5e0dc + lineHighlight + #313244 + misspelling + #f38ba8 + accent + #cba6f7 + selection + #9399b240 + activeGuide + #45475a + findHighlight + #3e5767 + gutterForeground + #7f849c + + + + name + Basic text & variable names (incl. leading punctuation) + scope + text, source, variable.other.readwrite, punctuation.definition.variable + settings + + foreground + #cdd6f4 + + + + name + Parentheses, Brackets, Braces + scope + punctuation + settings + + foreground + #9399b2 + fontStyle + + + + + name + Comments + scope + comment, punctuation.definition.comment + settings + + foreground + #6c7086 + fontStyle + italic + + + + scope + string, punctuation.definition.string + settings + + foreground + #a6e3a1 + + + + scope + constant.character.escape + settings + + foreground + #f5c2e7 + + + + name + Booleans, constants, numbers + scope + constant.numeric, variable.other.constant, entity.name.constant, constant.language.boolean, constant.language.false, constant.language.true, keyword.other.unit.user-defined, keyword.other.unit.suffix.floating-point + settings + + foreground + #fab387 + + + + scope + keyword, keyword.operator.word, keyword.operator.new, variable.language.super, support.type.primitive, storage.type, storage.modifier, punctuation.definition.keyword + settings + + foreground + #cba6f7 + fontStyle + + + + + scope + entity.name.tag.documentation + settings + + foreground + #cba6f7 + + + + name + Punctuation + scope + keyword.operator, punctuation.accessor, punctuation.definition.generic, meta.function.closure punctuation.section.parameters, punctuation.definition.tag, punctuation.separator.key-value + settings + + foreground + #94e2d5 + + + + scope + entity.name.function, meta.function-call.method, support.function, support.function.misc, variable.function + settings + + foreground + #89b4fa + fontStyle + italic + + + + name + Classes + scope + entity.name.class, entity.other.inherited-class, support.class, meta.function-call.constructor, entity.name.struct + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Enum + scope + entity.name.enum + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Enum member + scope + meta.enum variable.other.readwrite, variable.other.enummember + settings + + foreground + #94e2d5 + + + + name + Object properties + scope + meta.property.object + settings + + foreground + #94e2d5 + + + + name + Types + scope + meta.type, meta.type-alias, support.type, entity.name.type + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Decorators + scope + meta.annotation variable.function, meta.annotation variable.annotation.function, meta.annotation punctuation.definition.annotation, meta.decorator, punctuation.decorator + settings + + foreground + #fab387 + + + + scope + variable.parameter, meta.function.parameters + settings + + foreground + #eba0ac + fontStyle + italic + + + + name + Built-ins + scope + constant.language, support.function.builtin + settings + + foreground + #f38ba8 + + + + scope + entity.other.attribute-name.documentation + settings + + foreground + #f38ba8 + + + + name + Preprocessor directives + scope + keyword.control.directive, punctuation.definition.directive + settings + + foreground + #f9e2af + + + + name + Type parameters + scope + punctuation.definition.typeparameters + settings + + foreground + #89dceb + + + + name + Namespaces + scope + entity.name.namespace + settings + + foreground + #f9e2af + + + + name + Property names (left hand assignments in json/yaml/css) + scope + support.type.property-name.css + settings + + foreground + #89b4fa + fontStyle + + + + + name + This/Self keyword + scope + variable.language.this, variable.language.this punctuation.definition.variable + settings + + foreground + #f38ba8 + + + + name + Object properties + scope + variable.object.property + settings + + foreground + #cdd6f4 + + + + name + String template interpolation + scope + string.template variable, string variable + settings + + foreground + #cdd6f4 + + + + name + `new` as bold + scope + keyword.operator.new + settings + + fontStyle + bold + + + + name + C++ extern keyword + scope + storage.modifier.specifier.extern.cpp + settings + + foreground + #cba6f7 + + + + name + C++ scope resolution + scope + entity.name.scope-resolution.template.call.cpp, entity.name.scope-resolution.parameter.cpp, entity.name.scope-resolution.cpp, entity.name.scope-resolution.function.definition.cpp + settings + + foreground + #f9e2af + + + + name + C++ doc keywords + scope + storage.type.class.doxygen + settings + + fontStyle + + + + + name + C++ operators + scope + storage.modifier.reference.cpp + settings + + foreground + #94e2d5 + + + + name + C# Interpolated Strings + scope + meta.interpolation.cs + settings + + foreground + #cdd6f4 + + + + name + C# xml-style docs + scope + comment.block.documentation.cs + settings + + foreground + #cdd6f4 + + + + name + Classes, reflecting the className color in JSX + scope + source.css entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css + settings + + foreground + #f9e2af + + + + name + Operators + scope + punctuation.separator.operator.css + settings + + foreground + #94e2d5 + + + + name + Pseudo classes + scope + source.css entity.other.attribute-name.pseudo-class + settings + + foreground + #94e2d5 + + + + scope + source.css constant.other.unicode-range + settings + + foreground + #fab387 + + + + scope + source.css variable.parameter.url + settings + + foreground + #a6e3a1 + fontStyle + + + + + name + CSS vendored property names + scope + support.type.vendored.property-name + settings + + foreground + #89dceb + + + + name + Less/SCSS right-hand variables (@/$-prefixed) + scope + source.css meta.property-value variable, source.css meta.property-value variable.other.less, source.css meta.property-value variable.other.less punctuation.definition.variable.less, meta.definition.variable.scss + settings + + foreground + #eba0ac + + + + name + CSS variables (--prefixed) + scope + source.css meta.property-list variable, meta.property-list variable.other.less, meta.property-list variable.other.less punctuation.definition.variable.less + settings + + foreground + #89b4fa + + + + name + CSS Percentage values, styled the same as numbers + scope + keyword.other.unit.percentage.css + settings + + foreground + #fab387 + + + + name + CSS Attribute selectors, styled the same as strings + scope + source.css meta.attribute-selector + settings + + foreground + #a6e3a1 + + + + name + JSON/YAML keys, other left-hand assignments + scope + keyword.other.definition.ini, punctuation.support.type.property-name.json, support.type.property-name.json, punctuation.support.type.property-name.toml, support.type.property-name.toml, entity.name.tag.yaml, punctuation.support.type.property-name.yaml, support.type.property-name.yaml + settings + + foreground + #89b4fa + fontStyle + + + + + name + JSON/YAML constants + scope + constant.language.json, constant.language.yaml + settings + + foreground + #fab387 + + + + name + YAML anchors + scope + entity.name.type.anchor.yaml, variable.other.alias.yaml + settings + + foreground + #f9e2af + fontStyle + + + + + name + TOML tables / ini groups + scope + support.type.property-name.table, entity.name.section.group-title.ini + settings + + foreground + #f9e2af + + + + name + TOML dates + scope + constant.other.time.datetime.offset.toml + settings + + foreground + #f5c2e7 + + + + name + YAML anchor puctuation + scope + punctuation.definition.anchor.yaml, punctuation.definition.alias.yaml + settings + + foreground + #f5c2e7 + + + + name + YAML triple dashes + scope + entity.other.document.begin.yaml + settings + + foreground + #f5c2e7 + + + + name + Markup Diff + scope + markup.changed.diff + settings + + foreground + #fab387 + + + + name + Diff + scope + meta.diff.header.from-file, meta.diff.header.to-file, punctuation.definition.from-file.diff, punctuation.definition.to-file.diff + settings + + foreground + #89b4fa + + + + name + Diff Inserted + scope + markup.inserted.diff + settings + + foreground + #a6e3a1 + + + + name + Diff Deleted + scope + markup.deleted.diff + settings + + foreground + #f38ba8 + + + + name + dotenv left-hand side assignments + scope + variable.other.env + settings + + foreground + #89b4fa + + + + name + dotenv reference to existing env variable + scope + string.quoted variable.other.env + settings + + foreground + #cdd6f4 + + + + name + GDScript functions + scope + support.function.builtin.gdscript + settings + + foreground + #89b4fa + + + + name + GDScript constants + scope + constant.language.gdscript + settings + + foreground + #fab387 + + + + name + Comment keywords + scope + comment meta.annotation.go + settings + + foreground + #eba0ac + + + + name + go:embed, go:build, etc. + scope + comment meta.annotation.parameters.go + settings + + foreground + #fab387 + + + + name + Go constants (nil, true, false) + scope + constant.language.go + settings + + foreground + #fab387 + + + + name + GraphQL variables + scope + variable.graphql + settings + + foreground + #cdd6f4 + + + + name + GraphQL aliases + scope + string.unquoted.alias.graphql + settings + + foreground + #f2cdcd + + + + name + GraphQL enum members + scope + constant.character.enum.graphql + settings + + foreground + #94e2d5 + + + + name + GraphQL field in types + scope + meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql + settings + + foreground + #f2cdcd + + + + name + HTML/XML DOCTYPE as keyword + scope + keyword.other.doctype, meta.tag.sgml.doctype punctuation.definition.tag, meta.tag.metadata.doctype entity.name.tag, meta.tag.metadata.doctype punctuation.definition.tag + settings + + foreground + #cba6f7 + + + + name + HTML/XML-like <tags/> + scope + entity.name.tag + settings + + foreground + #89b4fa + fontStyle + + + + + name + Special characters like &amp; + scope + text.html constant.character.entity, text.html constant.character.entity punctuation, constant.character.entity.xml, constant.character.entity.xml punctuation, constant.character.entity.js.jsx, constant.charactger.entity.js.jsx punctuation, constant.character.entity.tsx, constant.character.entity.tsx punctuation + settings + + foreground + #f38ba8 + + + + name + HTML/XML tag attribute values + scope + entity.other.attribute-name + settings + + foreground + #f9e2af + + + + name + Components + scope + support.class.component, support.class.component.jsx, support.class.component.tsx, support.class.component.vue + settings + + foreground + #f5c2e7 + fontStyle + + + + + name + Annotations + scope + punctuation.definition.annotation, storage.type.annotation + settings + + foreground + #fab387 + + + + name + Java enums + scope + constant.other.enum.java + settings + + foreground + #94e2d5 + + + + name + Java imports + scope + storage.modifier.import.java + settings + + foreground + #cdd6f4 + + + + name + Javadoc + scope + comment.block.javadoc.java keyword.other.documentation.javadoc.java + settings + + fontStyle + + + + + name + Exported Variable + scope + meta.export variable.other.readwrite.js + settings + + foreground + #eba0ac + + + + name + JS/TS constants & properties + scope + variable.other.constant.js, variable.other.constant.ts, variable.other.property.js, variable.other.property.ts + settings + + foreground + #cdd6f4 + + + + name + JSDoc; these are mainly params, so styled as such + scope + variable.other.jsdoc, comment.block.documentation variable.other + settings + + foreground + #eba0ac + fontStyle + + + + + name + JSDoc keywords + scope + storage.type.class.jsdoc + settings + + fontStyle + + + + + scope + support.type.object.console.js + settings + + foreground + #cdd6f4 + + + + name + Node constants as keywords (module, etc.) + scope + support.constant.node, support.type.object.module.js + settings + + foreground + #cba6f7 + + + + name + implements as keyword + scope + storage.modifier.implements + settings + + foreground + #cba6f7 + + + + name + Builtin types + scope + constant.language.null.js, constant.language.null.ts, constant.language.undefined.js, constant.language.undefined.ts, support.type.builtin.ts + settings + + foreground + #cba6f7 + + + + scope + variable.parameter.generic + settings + + foreground + #f9e2af + + + + name + Arrow functions + scope + keyword.declaration.function.arrow.js, storage.type.function.arrow.ts + settings + + foreground + #94e2d5 + + + + name + Decorator punctuations (decorators inherit from blue functions, instead of styleguide peach) + scope + punctuation.decorator.ts + settings + + foreground + #89b4fa + fontStyle + italic + + + + name + Extra JS/TS keywords + scope + keyword.operator.expression.in.js, keyword.operator.expression.in.ts, keyword.operator.expression.infer.ts, keyword.operator.expression.instanceof.js, keyword.operator.expression.instanceof.ts, keyword.operator.expression.is, keyword.operator.expression.keyof.ts, keyword.operator.expression.of.js, keyword.operator.expression.of.ts, keyword.operator.expression.typeof.ts + settings + + foreground + #cba6f7 + + + + name + Julia macros + scope + support.function.macro.julia + settings + + foreground + #94e2d5 + fontStyle + italic + + + + name + Julia language constants (true, false) + scope + constant.language.julia + settings + + foreground + #fab387 + + + + name + Julia other constants (these seem to be arguments inside arrays) + scope + constant.other.symbol.julia + settings + + foreground + #eba0ac + + + + name + LaTeX preamble + scope + text.tex keyword.control.preamble + settings + + foreground + #94e2d5 + + + + name + LaTeX be functions + scope + text.tex support.function.be + settings + + foreground + #89dceb + + + + name + LaTeX math + scope + constant.other.general.math.tex + settings + + foreground + #f2cdcd + + + + name + Lua docstring keywords + scope + comment.line.double-dash.documentation.lua storage.type.annotation.lua + settings + + foreground + #cba6f7 + fontStyle + + + + + name + Lua docstring variables + scope + comment.line.double-dash.documentation.lua entity.name.variable.lua, comment.line.double-dash.documentation.lua variable.lua + settings + + foreground + #cdd6f4 + + + + scope + heading.1.markdown punctuation.definition.heading.markdown, heading.1.markdown, markup.heading.atx.1.mdx, markup.heading.atx.1.mdx punctuation.definition.heading.mdx, markup.heading.setext.1.markdown, markup.heading.heading-0.asciidoc + settings + + foreground + #f38ba8 + + + + scope + heading.2.markdown punctuation.definition.heading.markdown, heading.2.markdown, markup.heading.atx.2.mdx, markup.heading.atx.2.mdx punctuation.definition.heading.mdx, markup.heading.setext.2.markdown, markup.heading.heading-1.asciidoc + settings + + foreground + #fab387 + + + + scope + heading.3.markdown punctuation.definition.heading.markdown, heading.3.markdown, markup.heading.atx.3.mdx, markup.heading.atx.3.mdx punctuation.definition.heading.mdx, markup.heading.heading-2.asciidoc + settings + + foreground + #f9e2af + + + + scope + heading.4.markdown punctuation.definition.heading.markdown, heading.4.markdown, markup.heading.atx.4.mdx, markup.heading.atx.4.mdx punctuation.definition.heading.mdx, markup.heading.heading-3.asciidoc + settings + + foreground + #a6e3a1 + + + + scope + heading.5.markdown punctuation.definition.heading.markdown, heading.5.markdown, markup.heading.atx.5.mdx, markup.heading.atx.5.mdx punctuation.definition.heading.mdx, markup.heading.heading-4.asciidoc + settings + + foreground + #89b4fa + + + + scope + heading.6.markdown punctuation.definition.heading.markdown, heading.6.markdown, markup.heading.atx.6.mdx, markup.heading.atx.6.mdx punctuation.definition.heading.mdx, markup.heading.heading-5.asciidoc + settings + + foreground + #cba6f7 + + + + scope + markup.bold + settings + + foreground + #f38ba8 + fontStyle + bold + + + + scope + markup.italic + settings + + foreground + #f38ba8 + fontStyle + italic + + + + scope + markup.strikethrough + settings + + foreground + #a6adc8 + fontStyle + strikethrough + + + + name + Markdown auto links + scope + punctuation.definition.link, markup.underline.link + settings + + foreground + #89b4fa + + + + name + Markdown links + scope + text.html.markdown punctuation.definition.link.title, string.other.link.title.markdown, markup.link, punctuation.definition.constant.markdown, constant.other.reference.link.markdown, markup.substitution.attribute-reference + settings + + foreground + #b4befe + + + + name + Markdown code spans + scope + punctuation.definition.raw.markdown, markup.inline.raw.string.markdown, markup.raw.block.markdown + settings + + foreground + #a6e3a1 + + + + name + Markdown triple backtick language identifier + scope + fenced_code.block.language + settings + + foreground + #89dceb + + + + name + Markdown triple backticks + scope + markup.fenced_code.block punctuation.definition, markup.raw support.asciidoc + settings + + foreground + #9399b2 + + + + name + Markdown quotes + scope + markup.quote, punctuation.definition.quote.begin + settings + + foreground + #f5c2e7 + + + + name + Markdown separators + scope + meta.separator.markdown + settings + + foreground + #94e2d5 + + + + name + Markdown list bullets + scope + punctuation.definition.list.begin.markdown, markup.list.bullet + settings + + foreground + #94e2d5 + + + + name + Nix attribute names + scope + entity.other.attribute-name.multipart.nix, entity.other.attribute-name.single.nix + settings + + foreground + #89b4fa + + + + name + Nix parameter names + scope + variable.parameter.name.nix + settings + + foreground + #cdd6f4 + fontStyle + + + + + name + Nix interpolated parameter names + scope + meta.embedded variable.parameter.name.nix + settings + + foreground + #b4befe + fontStyle + + + + + name + Nix paths + scope + string.unquoted.path.nix + settings + + foreground + #f5c2e7 + fontStyle + + + + + name + PHP Attributes + scope + support.attribute.builtin, meta.attribute.php + settings + + foreground + #f9e2af + + + + name + PHP Parameters (needed for the leading dollar sign) + scope + meta.function.parameters.php punctuation.definition.variable.php + settings + + foreground + #eba0ac + + + + name + PHP Constants (null, __FILE__, etc.) + scope + constant.language.php + settings + + foreground + #cba6f7 + + + + name + PHP functions + scope + text.html.php support.function + settings + + foreground + #89dceb + + + + name + PHPdoc keywords + scope + keyword.other.phpdoc.php + settings + + fontStyle + + + + + name + Python argument functions reset to text, otherwise they inherit blue from function-call + scope + support.variable.magic.python, meta.function-call.arguments.python + settings + + foreground + #cdd6f4 + + + + name + Python double underscore functions + scope + support.function.magic.python + settings + + foreground + #89dceb + fontStyle + italic + + + + name + Python `self` keyword + scope + variable.parameter.function.language.special.self.python, variable.language.special.self.python + settings + + foreground + #f38ba8 + fontStyle + italic + + + + name + python keyword flow/logical (for ... in) + scope + keyword.control.flow.python, keyword.operator.logical.python + settings + + foreground + #cba6f7 + + + + name + python storage type + scope + storage.type.function.python + settings + + foreground + #cba6f7 + + + + name + python function support + scope + support.token.decorator.python, meta.function.decorator.identifier.python + settings + + foreground + #89dceb + + + + name + python function calls + scope + meta.function-call.python + settings + + foreground + #89b4fa + + + + name + python function decorators + scope + entity.name.function.decorator.python, punctuation.definition.decorator.python + settings + + foreground + #fab387 + fontStyle + italic + + + + name + python placeholder reset to normal string + scope + constant.character.format.placeholder.other.python + settings + + foreground + #f5c2e7 + + + + name + Python exception & builtins such as exit() + scope + support.type.exception.python, support.function.builtin.python + settings + + foreground + #fab387 + + + + name + entity.name.type + scope + support.type.python + settings + + foreground + #fab387 + + + + name + python constants (True/False) + scope + constant.language.python + settings + + foreground + #cba6f7 + + + + name + Arguments accessed later in the function body + scope + meta.indexed-name.python, meta.item-access.python + settings + + foreground + #eba0ac + fontStyle + italic + + + + name + Python f-strings/binary/unicode storage types + scope + storage.type.string.python + settings + + foreground + #a6e3a1 + fontStyle + italic + + + + name + Python type hints + scope + meta.function.parameters.python + settings + + fontStyle + + + + + name + Regex string begin/end in JS/TS + scope + string.regexp punctuation.definition.string.begin, string.regexp punctuation.definition.string.end + settings + + foreground + #f5c2e7 + + + + name + Regex anchors (^, $) + scope + keyword.control.anchor.regexp + settings + + foreground + #cba6f7 + + + + name + Regex regular string match + scope + string.regexp.ts + settings + + foreground + #cdd6f4 + + + + name + Regex group parenthesis & backreference (\1, \2, \3, ...) + scope + punctuation.definition.group.regexp, keyword.other.back-reference.regexp + settings + + foreground + #a6e3a1 + + + + name + Regex character class [] + scope + punctuation.definition.character-class.regexp + settings + + foreground + #f9e2af + + + + name + Regex character classes (\d, \w, \s) + scope + constant.other.character-class.regexp + settings + + foreground + #f5c2e7 + + + + name + Regex range + scope + constant.other.character-class.range.regexp + settings + + foreground + #f5e0dc + + + + name + Regex quantifier + scope + keyword.operator.quantifier.regexp + settings + + foreground + #94e2d5 + + + + name + Regex constant/numeric + scope + constant.character.numeric.regexp + settings + + foreground + #fab387 + + + + name + Regex lookaheads, negative lookaheads, lookbehinds, negative lookbehinds + scope + punctuation.definition.group.no-capture.regexp, meta.assertion.look-ahead.regexp, meta.assertion.negative-look-ahead.regexp + settings + + foreground + #89b4fa + + + + name + Rust attribute + scope + meta.annotation.rust, meta.annotation.rust punctuation, meta.attribute.rust, punctuation.definition.attribute.rust + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Rust attribute strings + scope + meta.attribute.rust string.quoted.double.rust, meta.attribute.rust string.quoted.single.char.rust + settings + + fontStyle + + + + + name + Rust keyword + scope + entity.name.function.macro.rules.rust, storage.type.module.rust, storage.modifier.rust, storage.type.struct.rust, storage.type.enum.rust, storage.type.trait.rust, storage.type.union.rust, storage.type.impl.rust, storage.type.rust, storage.type.function.rust, storage.type.type.rust + settings + + foreground + #cba6f7 + fontStyle + + + + + name + Rust u/i32, u/i64, etc. + scope + entity.name.type.numeric.rust + settings + + foreground + #cba6f7 + fontStyle + + + + + name + Rust generic + scope + meta.generic.rust + settings + + foreground + #fab387 + + + + name + Rust impl + scope + entity.name.impl.rust + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Rust module + scope + entity.name.module.rust + settings + + foreground + #fab387 + + + + name + Rust trait + scope + entity.name.trait.rust + settings + + foreground + #f9e2af + fontStyle + italic + + + + name + Rust struct + scope + storage.type.source.rust + settings + + foreground + #f9e2af + + + + name + Rust union + scope + entity.name.union.rust + settings + + foreground + #f9e2af + + + + name + Rust enum member + scope + meta.enum.rust storage.type.source.rust + settings + + foreground + #94e2d5 + + + + name + Rust macro + scope + support.macro.rust, meta.macro.rust support.function.rust, entity.name.function.macro.rust + settings + + foreground + #89b4fa + fontStyle + italic + + + + name + Rust lifetime + scope + storage.modifier.lifetime.rust, entity.name.type.lifetime + settings + + foreground + #89b4fa + fontStyle + italic + + + + name + Rust string formatting + scope + string.quoted.double.rust constant.other.placeholder.rust + settings + + foreground + #f5c2e7 + + + + name + Rust return type generic + scope + meta.function.return-type.rust meta.generic.rust storage.type.rust + settings + + foreground + #cdd6f4 + + + + name + Rust functions + scope + meta.function.call.rust + settings + + foreground + #89b4fa + + + + name + Rust angle brackets + scope + punctuation.brackets.angle.rust + settings + + foreground + #89dceb + + + + name + Rust constants + scope + constant.other.caps.rust + settings + + foreground + #fab387 + + + + name + Rust function parameters + scope + meta.function.definition.rust variable.other.rust + settings + + foreground + #eba0ac + + + + name + Rust closure variables + scope + meta.function.call.rust variable.other.rust + settings + + foreground + #cdd6f4 + + + + name + Rust self + scope + variable.language.self.rust + settings + + foreground + #f38ba8 + + + + name + Rust metavariable names + scope + variable.other.metavariable.name.rust, meta.macro.metavariable.rust keyword.operator.macro.dollar.rust + settings + + foreground + #f5c2e7 + + + + name + Shell shebang + scope + comment.line.shebang, comment.line.shebang punctuation.definition.comment, comment.line.shebang, punctuation.definition.comment.shebang.shell, meta.shebang.shell + settings + + foreground + #f5c2e7 + fontStyle + italic + + + + name + Shell shebang command + scope + comment.line.shebang constant.language + settings + + foreground + #94e2d5 + fontStyle + italic + + + + name + Shell interpolated command + scope + meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation, meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation + settings + + foreground + #f38ba8 + + + + name + Shell interpolated command variable + scope + meta.string meta.interpolation.parameter.shell variable.other.readwrite + settings + + foreground + #fab387 + fontStyle + italic + + + + scope + source.shell punctuation.section.interpolation, punctuation.definition.evaluation.backticks.shell + settings + + foreground + #94e2d5 + + + + name + Shell EOF + scope + entity.name.tag.heredoc.shell + settings + + foreground + #cba6f7 + + + + name + Shell quoted variable + scope + string.quoted.double.shell variable.other.normal.shell + settings + + foreground + #cdd6f4 + + + + name + JSON Keys + scope + source.json meta.mapping.key string + settings + + foreground + #89b4fa + + + + name + JSON key surrounding quotes + scope + source.json meta.mapping.key punctuation.definition.string.begin, source.json meta.mapping.key punctuation.definition.string.end + settings + + foreground + #9399b2 + + + + scope + markup.heading.synopsis.man, markup.heading.title.man, markup.heading.other.man, markup.heading.env.man + settings + + foreground + #cba6f7 + + + + scope + markup.heading.commands.man + settings + + foreground + #89b4fa + + + + scope + markup.heading.env.man + settings + + foreground + #f5c2e7 + + + + name + Man page options + scope + entity.name + settings + + foreground + #94e2d5 + + + + scope + markup.heading.1.markdown + settings + + foreground + #f38ba8 + + + + scope + markup.heading.2.markdown + settings + + foreground + #fab387 + + + + scope + markup.heading.markdown + settings + + foreground + #f9e2af + + + + + \ No newline at end of file diff --git a/hosts/thinkpad/home-manager/yazi/default.nix b/hosts/thinkpad/home-manager/yazi/default.nix new file mode 100644 index 0000000..8376601 --- /dev/null +++ b/hosts/thinkpad/home-manager/yazi/default.nix @@ -0,0 +1,327 @@ +{ lib, ... }: +let + theme = import ../../theme.nix; + batTheme = ".config/yazi/catppuccin-${theme.flavor}.tmTheme"; +in +{ + home.file.${batTheme}.source = ./catppuccin-mocha.tmTheme; + + programs.yazi = { + enable = true; + settings = { + manager = { + ratio = [ + 2 + 4 + 2 + ]; + sort_by = "natural"; + sort_sensitive = true; + sort_reverse = false; + sort_dir_first = true; + linemode = "none"; + show_hidden = true; + show_symlink = true; + }; + + preview = { + image_filter = "lanczos3"; + image_quality = 90; + tab_size = 1; + max_width = 600; + max_height = 900; + cache_dir = ""; + ueberzug_scale = 1; + ueberzug_offset = [ + 0 + 0 + 0 + 0 + ]; + }; + + tasks = { + micro_workers = 5; + macro_workers = 10; + bizarre_retry = 5; + }; + }; + theme = lib.mkForce { + manager = { + cwd = { + fg = "#${theme.tealAlpha}"; + }; + + hovered = { + fg = "#${theme.baseAlpha}"; + bg = "#${theme.blueAlpha}"; + }; + preview_hovered = { + fg = "#${theme.baseAlpha}"; + bg = "#${theme.textAlpha}"; + }; + + find_keyword = { + fg = "#${theme.yellowAlpha}"; + italic = true; + }; + find_position = { + fg = "#${theme.pinkAlpha}"; + bg = "reset"; + italic = true; + }; + + marker_copied = { + fg = "#${theme.greenAlpha}"; + bg = "#${theme.greenAlpha}"; + }; + marker_cut = { + fg = "#${theme.redAlpha}"; + bg = "#${theme.redAlpha}"; + }; + marker_marked = { + fg = "#${theme.tealAlpha}"; + bg = "#${theme.tealAlpha}"; + }; + marker_selected = { + fg = "#${theme.blueAlpha}"; + bg = "#${theme.blueAlpha}"; + }; + + tab_active = { + fg = "#${theme.baseAlpha}"; + bg = "#${theme.textAlpha}"; + }; + tab_inactive = { + fg = "#${theme.textAlpha}"; + bg = "#${theme.surface1Alpha}"; + }; + tab_width = 1; + + count_copied = { + fg = "#${theme.baseAlpha}"; + bg = "#${theme.greenAlpha}"; + }; + count_cut = { + fg = "#${theme.baseAlpha}"; + bg = "#${theme.redAlpha}"; + }; + count_selected = { + fg = "#${theme.baseAlpha}"; + bg = "#${theme.blueAlpha}"; + }; + + border_symbol = "│"; + border_style.fg = "#${theme.overlay1Alpha}"; + + syntect_theme = "~/${batTheme}"; + }; + + mode = { + normal_main = { + fg = "#${theme.baseAlpha}"; + bg = "#${theme.blueAlpha}"; + bold = true; + }; + normal_alt = { + fg = "#${theme.blueAlpha}"; + bg = "#${theme.surface0Alpha}"; + }; + + select_main = { + fg = "#${theme.baseAlpha}"; + bg = "#${theme.greenAlpha}"; + bold = true; + }; + select_alt = { + fg = "#${theme.greenAlpha}"; + bg = "#${theme.surface0Alpha}"; + }; + + unset_main = { + fg = "#${theme.baseAlpha}"; + bg = "#${theme.flamingoAlpha}"; + bold = true; + }; + unset_alt = { + fg = "#${theme.flamingoAlpha}"; + bg = "#${theme.surface0Alpha}"; + }; + }; + + status = { + separator_open = ""; + separator_close = ""; + + progress_label = { + fg = "#ffffff"; + bold = true; + }; + progress_normal = { + fg = "#${theme.blueAlpha}"; + bg = "#${theme.surface1Alpha}"; + }; + progress_error = { + fg = "#${theme.redAlpha}"; + bg = "#${theme.surface1Alpha}"; + }; + + perm_type = { + fg = "#${theme.blueAlpha}"; + }; + perm_read = { + fg = "#${theme.yellowAlpha}"; + }; + perm_write = { + fg = "#${theme.redAlpha}"; + }; + perm_exec = { + fg = "#${theme.greenAlpha}"; + }; + perm_sep = { + fg = "#${theme.overlay1Alpha}"; + }; + }; + + input = { + border = { + fg = "#${theme.blueAlpha}"; + }; + title = { }; + value = { }; + selected.reversed = true; + }; + + pick = { + border = { + fg = "#${theme.blueAlpha}"; + }; + active = { + fg = "#${theme.pinkAlpha}"; + }; + inactive = { }; + }; + + confirm = { + border = { + fg = "#${theme.blueAlpha}"; + }; + title = { + fg = "#${theme.blueAlpha}"; + }; + content = { }; + list = { }; + btn_yes = { + reversed = true; + }; + btn_no = { }; + }; + + completion = { + border = { + fg = "#${theme.blueAlpha}"; + }; + }; + tasks = { + border = { + fg = "#${theme.blueAlpha}"; + }; + title = { }; + hovered = { + underline = true; + }; + }; + + which = { + mask = { + bg = "#${theme.surface0Alpha}"; + }; + cand = { + fg = "#${theme.tealAlpha}"; + }; + rest = { + fg = "#9399b2"; + }; + desc = { + fg = "#${theme.pinkAlpha}"; + }; + separator = "  "; + separator_style = { + fg = "#${theme.surface2Alpha}"; + }; + }; + help = { + on = { + fg = "#${theme.tealAlpha}"; + }; + run = { + fg = "#${theme.pinkAlpha}"; + }; + desc = { + fg = "#9399b2"; + }; + hovered = { + bg = "#${theme.surface2Alpha}"; + bold = true; + }; + footer = { + fg = "#${theme.textAlpha}"; + bg = "#${theme.surface1Alpha}"; + }; + }; + + notify = { + title_info = { + fg = "#${theme.tealAlpha}"; + }; + title_warn = { + fg = "#${theme.yellowAlpha}"; + }; + title_error = { + fg = "#${theme.redAlpha}"; + }; + }; + filetype = { + rules = [ + # Media + { + mime = "image/*"; + fg = "#${theme.tealAlpha}"; + } + { + mime = "{audio;video}/*"; + fg = "#${theme.yellowAlpha}"; + } + + # Archives + { + mime = "application/*zip"; + fg = "#${theme.pinkAlpha}"; + } + { + mime = "application/x-{tar;bzip*;7z-compressed;xz;rar}"; + fg = "#${theme.pinkAlpha}"; + } + + # Documents + { + mime = "application/{pdf;doc;rtf}"; + fg = "#${theme.greenAlpha}"; + } + + # Fallback + { + name = "*"; + fg = "#${theme.textAlpha}"; + } + { + name = "*/"; + fg = "#${theme.blueAlpha}"; + } + ]; + }; + + icon = import ./icons.nix; + }; + }; +} diff --git a/hosts/thinkpad/home-manager/yazi/icons.nix b/hosts/thinkpad/home-manager/yazi/icons.nix new file mode 100644 index 0000000..973cac2 --- /dev/null +++ b/hosts/thinkpad/home-manager/yazi/icons.nix @@ -0,0 +1,3146 @@ +{ + files = [ + { + name = "kritadisplayrc"; + text = ""; + fg = "#cba6f7"; + } + { + name = ".gtkrc-2.0"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "bspwmrc"; + text = ""; + fg = "#313244"; + } + { + name = "webpack"; + text = "󰜫"; + fg = "#74c7ec"; + } + { + name = "tsconfig.json"; + text = ""; + fg = "#74c7ec"; + } + { + name = ".vimrc"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "gemfile$"; + text = ""; + fg = "#313244"; + } + { + name = "xmobarrc"; + text = ""; + fg = "#f38ba8"; + } + { + name = "avif"; + text = ""; + fg = "#7f849c"; + } + { + name = "fp-info-cache"; + text = ""; + fg = "#f5e0dc"; + } + { + name = ".zshrc"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "robots.txt"; + text = "󰚩"; + fg = "#6c7086"; + } + { + name = "dockerfile"; + text = "󰡨"; + fg = "#89b4fa"; + } + { + name = ".git-blame-ignore-revs"; + text = ""; + fg = "#fab387"; + } + { + name = ".nvmrc"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "hyprpaper.conf"; + text = ""; + fg = "#74c7ec"; + } + { + name = ".prettierignore"; + text = ""; + fg = "#89b4fa"; + } + { + name = "rakefile"; + text = ""; + fg = "#313244"; + } + { + name = "code_of_conduct"; + text = ""; + fg = "#f38ba8"; + } + { + name = "cmakelists.txt"; + text = ""; + fg = "#cdd6f4"; + } + { + name = ".env"; + text = ""; + fg = "#f9e2af"; + } + { + name = "copying.lesser"; + text = ""; + fg = "#f9e2af"; + } + { + name = "readme"; + text = "󰂺"; + fg = "#f5e0dc"; + } + { + name = "settings.gradle"; + text = ""; + fg = "#585b70"; + } + { + name = "gruntfile.coffee"; + text = ""; + fg = "#fab387"; + } + { + name = ".eslintignore"; + text = ""; + fg = "#585b70"; + } + { + name = "kdenliverc"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".prettierrc.cjs"; + text = ""; + fg = "#89b4fa"; + } + { + name = "cantorrc"; + text = ""; + fg = "#89b4fa"; + } + { + name = "rmd"; + text = ""; + fg = "#74c7ec"; + } + { + name = "vagrantfile$"; + text = ""; + fg = "#6c7086"; + } + { + name = ".Xauthority"; + text = ""; + fg = "#fab387"; + } + { + name = "prettier.config.ts"; + text = ""; + fg = "#89b4fa"; + } + { + name = "node_modules"; + text = ""; + fg = "#f38ba8"; + } + { + name = ".prettierrc.toml"; + text = ""; + fg = "#89b4fa"; + } + { + name = "build.zig.zon"; + text = ""; + fg = "#fab387"; + } + { + name = ".ds_store"; + text = ""; + fg = "#45475a"; + } + { + name = "PKGBUILD"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".prettierrc"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".bash_profile"; + text = ""; + fg = "#a6e3a1"; + } + { + name = ".npmignore"; + text = ""; + fg = "#f38ba8"; + } + { + name = ".mailmap"; + text = "󰊢"; + fg = "#fab387"; + } + { + name = ".codespellrc"; + text = "󰓆"; + fg = "#a6e3a1"; + } + { + name = "svelte.config.js"; + text = ""; + fg = "#fab387"; + } + { + name = "eslint.config.ts"; + text = ""; + fg = "#585b70"; + } + { + name = "config"; + text = ""; + fg = "#7f849c"; + } + { + name = ".gitlab-ci.yml"; + text = ""; + fg = "#fab387"; + } + { + name = ".gitconfig"; + text = ""; + fg = "#fab387"; + } + { + name = "_gvimrc"; + text = ""; + fg = "#a6e3a1"; + } + { + name = ".xinitrc"; + text = ""; + fg = "#fab387"; + } + { + name = "checkhealth"; + text = "󰓙"; + fg = "#89b4fa"; + } + { + name = "sxhkdrc"; + text = ""; + fg = "#313244"; + } + { + name = ".bashrc"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "tailwind.config.mjs"; + text = "󱏿"; + fg = "#74c7ec"; + } + { + name = "ext_typoscript_setup.txt"; + text = ""; + fg = "#fab387"; + } + { + name = "commitlint.config.ts"; + text = "󰜘"; + fg = "#94e2d5"; + } + { + name = "py.typed"; + text = ""; + fg = "#f9e2af"; + } + { + name = ".nanorc"; + text = ""; + fg = "#313244"; + } + { + name = "commit_editmsg"; + text = ""; + fg = "#fab387"; + } + { + name = ".luaurc"; + text = ""; + fg = "#89b4fa"; + } + { + name = "fp-lib-table"; + text = ""; + fg = "#f5e0dc"; + } + { + name = ".editorconfig"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "justfile"; + text = ""; + fg = "#7f849c"; + } + { + name = "kdeglobals"; + text = ""; + fg = "#89b4fa"; + } + { + name = "license.md"; + text = ""; + fg = "#f9e2af"; + } + { + name = ".clang-format"; + text = ""; + fg = "#7f849c"; + } + { + name = "docker-compose.yaml"; + text = "󰡨"; + fg = "#89b4fa"; + } + { + name = "copying"; + text = ""; + fg = "#f9e2af"; + } + { + name = "go.mod"; + text = ""; + fg = "#74c7ec"; + } + { + name = "lxqt.conf"; + text = ""; + fg = "#89b4fa"; + } + { + name = "brewfile"; + text = ""; + fg = "#313244"; + } + { + name = "gulpfile.coffee"; + text = ""; + fg = "#f38ba8"; + } + { + name = ".dockerignore"; + text = "󰡨"; + fg = "#89b4fa"; + } + { + name = ".settings.json"; + text = ""; + fg = "#6c7086"; + } + { + name = "tailwind.config.js"; + text = "󱏿"; + fg = "#74c7ec"; + } + { + name = ".clang-tidy"; + text = ""; + fg = "#7f849c"; + } + { + name = ".gvimrc"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "nuxt.config.cjs"; + text = "󱄆"; + fg = "#a6e3a1"; + } + { + name = "xsettingsd.conf"; + text = ""; + fg = "#fab387"; + } + { + name = "nuxt.config.js"; + text = "󱄆"; + fg = "#a6e3a1"; + } + { + name = "eslint.config.cjs"; + text = ""; + fg = "#585b70"; + } + { + name = "sym-lib-table"; + text = ""; + fg = "#f5e0dc"; + } + { + name = ".condarc"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "xmonad.hs"; + text = ""; + fg = "#f38ba8"; + } + { + name = "tmux.conf"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "xmobarrc.hs"; + text = ""; + fg = "#f38ba8"; + } + { + name = ".prettierrc.yaml"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".pre-commit-config.yaml"; + text = "󰛢"; + fg = "#fab387"; + } + { + name = "i3blocks.conf"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "xorg.conf"; + text = ""; + fg = "#fab387"; + } + { + name = ".zshenv"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "vlcrc"; + text = "󰕼"; + fg = "#fab387"; + } + { + name = "license"; + text = ""; + fg = "#f9e2af"; + } + { + name = "unlicense"; + text = ""; + fg = "#f9e2af"; + } + { + name = "tmux.conf.local"; + text = ""; + fg = "#a6e3a1"; + } + { + name = ".SRCINFO"; + text = "󰣇"; + fg = "#89b4fa"; + } + { + name = "tailwind.config.ts"; + text = "󱏿"; + fg = "#74c7ec"; + } + { + name = "security.md"; + text = "󰒃"; + fg = "#bac2de"; + } + { + name = "security"; + text = "󰒃"; + fg = "#bac2de"; + } + { + name = ".eslintrc"; + text = ""; + fg = "#585b70"; + } + { + name = "gradle.properties"; + text = ""; + fg = "#585b70"; + } + { + name = "code_of_conduct.md"; + text = ""; + fg = "#f38ba8"; + } + { + name = "PrusaSlicerGcodeViewer.ini"; + text = ""; + fg = "#fab387"; + } + { + name = "PrusaSlicer.ini"; + text = ""; + fg = "#fab387"; + } + { + name = "procfile"; + text = ""; + fg = "#7f849c"; + } + { + name = "mpv.conf"; + text = ""; + fg = "#1e1e2e"; + } + { + name = ".prettierrc.json5"; + text = ""; + fg = "#89b4fa"; + } + { + name = "i3status.conf"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "prettier.config.mjs"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".pylintrc"; + text = ""; + fg = "#7f849c"; + } + { + name = "prettier.config.cjs"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".luacheckrc"; + text = ""; + fg = "#89b4fa"; + } + { + name = "containerfile"; + text = "󰡨"; + fg = "#89b4fa"; + } + { + name = "eslint.config.mjs"; + text = ""; + fg = "#585b70"; + } + { + name = "gruntfile.js"; + text = ""; + fg = "#fab387"; + } + { + name = "bun.lockb"; + text = ""; + fg = "#f5e0dc"; + } + { + name = ".gitattributes"; + text = ""; + fg = "#fab387"; + } + { + name = "gruntfile.ts"; + text = ""; + fg = "#fab387"; + } + { + name = "pom.xml"; + text = ""; + fg = "#313244"; + } + { + name = "favicon.ico"; + text = ""; + fg = "#f9e2af"; + } + { + name = "package-lock.json"; + text = ""; + fg = "#313244"; + } + { + name = "build"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "package.json"; + text = ""; + fg = "#f38ba8"; + } + { + name = "nuxt.config.ts"; + text = "󱄆"; + fg = "#a6e3a1"; + } + { + name = "nuxt.config.mjs"; + text = "󱄆"; + fg = "#a6e3a1"; + } + { + name = "mix.lock"; + text = ""; + fg = "#7f849c"; + } + { + name = "makefile"; + text = ""; + fg = "#7f849c"; + } + { + name = "gulpfile.js"; + text = ""; + fg = "#f38ba8"; + } + { + name = "lxde-rc.xml"; + text = ""; + fg = "#9399b2"; + } + { + name = "kritarc"; + text = ""; + fg = "#cba6f7"; + } + { + name = "gtkrc"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "ionic.config.json"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".prettierrc.mjs"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".prettierrc.yml"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".npmrc"; + text = ""; + fg = "#f38ba8"; + } + { + name = "weston.ini"; + text = ""; + fg = "#f9e2af"; + } + { + name = "gulpfile.babel.js"; + text = ""; + fg = "#f38ba8"; + } + { + name = "i18n.config.ts"; + text = "󰗊"; + fg = "#7f849c"; + } + { + name = "commitlint.config.js"; + text = "󰜘"; + fg = "#94e2d5"; + } + { + name = ".gitmodules"; + text = ""; + fg = "#fab387"; + } + { + name = "gradle-wrapper.properties"; + text = ""; + fg = "#585b70"; + } + { + name = "hypridle.conf"; + text = ""; + fg = "#74c7ec"; + } + { + name = "vercel.json"; + text = "▲"; + fg = "#f5e0dc"; + } + { + name = "hyprlock.conf"; + text = ""; + fg = "#74c7ec"; + } + { + name = "go.sum"; + text = ""; + fg = "#74c7ec"; + } + { + name = "kdenlive-layoutsrc"; + text = ""; + fg = "#89b4fa"; + } + { + name = "gruntfile.babel.js"; + text = ""; + fg = "#fab387"; + } + { + name = "compose.yml"; + text = "󰡨"; + fg = "#89b4fa"; + } + { + name = "i18n.config.js"; + text = "󰗊"; + fg = "#7f849c"; + } + { + name = "readme.md"; + text = "󰂺"; + fg = "#f5e0dc"; + } + { + name = "gradlew"; + text = ""; + fg = "#585b70"; + } + { + name = "go.work"; + text = ""; + fg = "#74c7ec"; + } + { + name = "gulpfile.ts"; + text = ""; + fg = "#f38ba8"; + } + { + name = "gnumakefile"; + text = ""; + fg = "#7f849c"; + } + { + name = "FreeCAD.conf"; + text = ""; + fg = "#f38ba8"; + } + { + name = "compose.yaml"; + text = "󰡨"; + fg = "#89b4fa"; + } + { + name = "eslint.config.js"; + text = ""; + fg = "#585b70"; + } + { + name = "hyprland.conf"; + text = ""; + fg = "#74c7ec"; + } + { + name = "docker-compose.yml"; + text = "󰡨"; + fg = "#89b4fa"; + } + { + name = "groovy"; + text = ""; + fg = "#585b70"; + } + { + name = "QtProject.conf"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "platformio.ini"; + text = ""; + fg = "#fab387"; + } + { + name = "build.gradle"; + text = ""; + fg = "#585b70"; + } + { + name = ".nuxtrc"; + text = "󱄆"; + fg = "#a6e3a1"; + } + { + name = "_vimrc"; + text = ""; + fg = "#a6e3a1"; + } + { + name = ".zprofile"; + text = ""; + fg = "#a6e3a1"; + } + { + name = ".xsession"; + text = ""; + fg = "#fab387"; + } + { + name = "prettier.config.js"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".babelrc"; + text = ""; + fg = "#f9e2af"; + } + { + name = "workspace"; + text = ""; + fg = "#a6e3a1"; + } + { + name = ".prettierrc.json"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".prettierrc.js"; + text = ""; + fg = "#89b4fa"; + } + { + name = ".Xresources"; + text = ""; + fg = "#fab387"; + } + { + name = ".gitignore"; + text = ""; + fg = "#fab387"; + } + { + name = ".justfile"; + text = ""; + fg = "#7f849c"; + } + ]; + exts = [ + { + name = "otf"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "import"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "krz"; + text = ""; + fg = "#cba6f7"; + } + { + name = "adb"; + text = ""; + fg = "#94e2d5"; + } + { + name = "ttf"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "webpack"; + text = "󰜫"; + fg = "#74c7ec"; + } + { + name = "dart"; + text = ""; + fg = "#585b70"; + } + { + name = "vsh"; + text = ""; + fg = "#7f849c"; + } + { + name = "doc"; + text = "󰈬"; + fg = "#585b70"; + } + { + name = "zsh"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "ex"; + text = ""; + fg = "#7f849c"; + } + { + name = "hx"; + text = ""; + fg = "#fab387"; + } + { + name = "fodt"; + text = ""; + fg = "#74c7ec"; + } + { + name = "mojo"; + text = ""; + fg = "#fab387"; + } + { + name = "templ"; + text = ""; + fg = "#f9e2af"; + } + { + name = "nix"; + text = ""; + fg = "#74c7ec"; + } + { + name = "cshtml"; + text = "󱦗"; + fg = "#585b70"; + } + { + name = "fish"; + text = ""; + fg = "#585b70"; + } + { + name = "ply"; + text = "󰆧"; + fg = "#7f849c"; + } + { + name = "sldprt"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "gemspec"; + text = ""; + fg = "#313244"; + } + { + name = "mjs"; + text = ""; + fg = "#f9e2af"; + } + { + name = "csh"; + text = ""; + fg = "#585b70"; + } + { + name = "cmake"; + text = ""; + fg = "#cdd6f4"; + } + { + name = "fodp"; + text = ""; + fg = "#fab387"; + } + { + name = "vi"; + text = ""; + fg = "#f9e2af"; + } + { + name = "msf"; + text = ""; + fg = "#89b4fa"; + } + { + name = "blp"; + text = "󰺾"; + fg = "#89b4fa"; + } + { + name = "less"; + text = ""; + fg = "#45475a"; + } + { + name = "sh"; + text = ""; + fg = "#585b70"; + } + { + name = "odg"; + text = ""; + fg = "#f9e2af"; + } + { + name = "mint"; + text = "󰌪"; + fg = "#a6e3a1"; + } + { + name = "dll"; + text = ""; + fg = "#11111b"; + } + { + name = "odf"; + text = ""; + fg = "#f38ba8"; + } + { + name = "sqlite3"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "Dockerfile"; + text = "󰡨"; + fg = "#89b4fa"; + } + { + name = "ksh"; + text = ""; + fg = "#585b70"; + } + { + name = "rmd"; + text = ""; + fg = "#74c7ec"; + } + { + name = "wv"; + text = ""; + fg = "#74c7ec"; + } + { + name = "xml"; + text = "󰗀"; + fg = "#fab387"; + } + { + name = "markdown"; + text = ""; + fg = "#cdd6f4"; + } + { + name = "qml"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "3gp"; + text = ""; + fg = "#fab387"; + } + { + name = "pxi"; + text = ""; + fg = "#89b4fa"; + } + { + name = "flac"; + text = ""; + fg = "#6c7086"; + } + { + name = "gpr"; + text = ""; + fg = "#cba6f7"; + } + { + name = "huff"; + text = "󰡘"; + fg = "#585b70"; + } + { + name = "json"; + text = ""; + fg = "#f9e2af"; + } + { + name = "gv"; + text = "󱁉"; + fg = "#585b70"; + } + { + name = "bmp"; + text = ""; + fg = "#7f849c"; + } + { + name = "lock"; + text = ""; + fg = "#bac2de"; + } + { + name = "sha384"; + text = "󰕥"; + fg = "#7f849c"; + } + { + name = "cobol"; + text = "⚙"; + fg = "#585b70"; + } + { + name = "cob"; + text = "⚙"; + fg = "#585b70"; + } + { + name = "java"; + text = ""; + fg = "#f38ba8"; + } + { + name = "cjs"; + text = ""; + fg = "#f9e2af"; + } + { + name = "qm"; + text = ""; + fg = "#74c7ec"; + } + { + name = "ebuild"; + text = ""; + fg = "#45475a"; + } + { + name = "mustache"; + text = ""; + fg = "#fab387"; + } + { + name = "terminal"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "ejs"; + text = ""; + fg = "#f9e2af"; + } + { + name = "brep"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "rar"; + text = ""; + fg = "#fab387"; + } + { + name = "gradle"; + text = ""; + fg = "#585b70"; + } + { + name = "gnumakefile"; + text = ""; + fg = "#7f849c"; + } + { + name = "applescript"; + text = ""; + fg = "#7f849c"; + } + { + name = "elm"; + text = ""; + fg = "#74c7ec"; + } + { + name = "ebook"; + text = ""; + fg = "#fab387"; + } + { + name = "kra"; + text = ""; + fg = "#cba6f7"; + } + { + name = "tf"; + text = ""; + fg = "#585b70"; + } + { + name = "xls"; + text = "󰈛"; + fg = "#585b70"; + } + { + name = "fnl"; + text = ""; + fg = "#f9e2af"; + } + { + name = "kdbx"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "kicad_pcb"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "cfg"; + text = ""; + fg = "#7f849c"; + } + { + name = "ape"; + text = ""; + fg = "#74c7ec"; + } + { + name = "org"; + text = ""; + fg = "#94e2d5"; + } + { + name = "yml"; + text = ""; + fg = "#7f849c"; + } + { + name = "swift"; + text = ""; + fg = "#fab387"; + } + { + name = "eln"; + text = ""; + fg = "#7f849c"; + } + { + name = "sol"; + text = ""; + fg = "#74c7ec"; + } + { + name = "awk"; + text = ""; + fg = "#585b70"; + } + { + name = "7z"; + text = ""; + fg = "#fab387"; + } + { + name = "apl"; + text = "⍝"; + fg = "#fab387"; + } + { + name = "epp"; + text = ""; + fg = "#fab387"; + } + { + name = "app"; + text = ""; + fg = "#45475a"; + } + { + name = "dot"; + text = "󱁉"; + fg = "#585b70"; + } + { + name = "kpp"; + text = ""; + fg = "#cba6f7"; + } + { + name = "eot"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "hpp"; + text = ""; + fg = "#7f849c"; + } + { + name = "spec.tsx"; + text = ""; + fg = "#585b70"; + } + { + name = "hurl"; + text = ""; + fg = "#f38ba8"; + } + { + name = "cxxm"; + text = ""; + fg = "#74c7ec"; + } + { + name = "c"; + text = ""; + fg = "#89b4fa"; + } + { + name = "fcmacro"; + text = ""; + fg = "#f38ba8"; + } + { + name = "sass"; + text = ""; + fg = "#f38ba8"; + } + { + name = "yaml"; + text = ""; + fg = "#7f849c"; + } + { + name = "xz"; + text = ""; + fg = "#fab387"; + } + { + name = "material"; + text = "󰔉"; + fg = "#f38ba8"; + } + { + name = "json5"; + text = ""; + fg = "#f9e2af"; + } + { + name = "signature"; + text = "λ"; + fg = "#fab387"; + } + { + name = "3mf"; + text = "󰆧"; + fg = "#7f849c"; + } + { + name = "jpg"; + text = ""; + fg = "#7f849c"; + } + { + name = "xpi"; + text = ""; + fg = "#fab387"; + } + { + name = "fcmat"; + text = ""; + fg = "#f38ba8"; + } + { + name = "pot"; + text = ""; + fg = "#74c7ec"; + } + { + name = "bin"; + text = ""; + fg = "#45475a"; + } + { + name = "xlsx"; + text = "󰈛"; + fg = "#585b70"; + } + { + name = "aac"; + text = ""; + fg = "#74c7ec"; + } + { + name = "kicad_sym"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "xcstrings"; + text = ""; + fg = "#74c7ec"; + } + { + name = "lff"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "xcf"; + text = ""; + fg = "#585b70"; + } + { + name = "azcli"; + text = ""; + fg = "#6c7086"; + } + { + name = "license"; + text = ""; + fg = "#f9e2af"; + } + { + name = "jsonc"; + text = ""; + fg = "#f9e2af"; + } + { + name = "xaml"; + text = "󰙳"; + fg = "#585b70"; + } + { + name = "md5"; + text = "󰕥"; + fg = "#7f849c"; + } + { + name = "xm"; + text = ""; + fg = "#74c7ec"; + } + { + name = "sln"; + text = ""; + fg = "#6c7086"; + } + { + name = "jl"; + text = ""; + fg = "#7f849c"; + } + { + name = "ml"; + text = ""; + fg = "#fab387"; + } + { + name = "http"; + text = ""; + fg = "#89b4fa"; + } + { + name = "x"; + text = ""; + fg = "#89b4fa"; + } + { + name = "wvc"; + text = ""; + fg = "#74c7ec"; + } + { + name = "wrz"; + text = "󰆧"; + fg = "#7f849c"; + } + { + name = "csproj"; + text = "󰪮"; + fg = "#585b70"; + } + { + name = "wrl"; + text = "󰆧"; + fg = "#7f849c"; + } + { + name = "wma"; + text = ""; + fg = "#74c7ec"; + } + { + name = "woff2"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "woff"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "tscn"; + text = ""; + fg = "#7f849c"; + } + { + name = "webmanifest"; + text = ""; + fg = "#f9e2af"; + } + { + name = "webm"; + text = ""; + fg = "#fab387"; + } + { + name = "fcbak"; + text = ""; + fg = "#f38ba8"; + } + { + name = "log"; + text = "󰌱"; + fg = "#cdd6f4"; + } + { + name = "wav"; + text = ""; + fg = "#74c7ec"; + } + { + name = "wasm"; + text = ""; + fg = "#585b70"; + } + { + name = "styl"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "gif"; + text = ""; + fg = "#7f849c"; + } + { + name = "resi"; + text = ""; + fg = "#f38ba8"; + } + { + name = "aiff"; + text = ""; + fg = "#74c7ec"; + } + { + name = "sha256"; + text = "󰕥"; + fg = "#7f849c"; + } + { + name = "igs"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "vsix"; + text = ""; + fg = "#6c7086"; + } + { + name = "vim"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "diff"; + text = ""; + fg = "#45475a"; + } + { + name = "drl"; + text = ""; + fg = "#eba0ac"; + } + { + name = "erl"; + text = ""; + fg = "#f38ba8"; + } + { + name = "vhdl"; + text = "󰍛"; + fg = "#a6e3a1"; + } + { + name = "🔥"; + text = ""; + fg = "#fab387"; + } + { + name = "hrl"; + text = ""; + fg = "#f38ba8"; + } + { + name = "fsi"; + text = ""; + fg = "#74c7ec"; + } + { + name = "mm"; + text = ""; + fg = "#74c7ec"; + } + { + name = "bz"; + text = ""; + fg = "#fab387"; + } + { + name = "vh"; + text = "󰍛"; + fg = "#a6e3a1"; + } + { + name = "kdb"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "gz"; + text = ""; + fg = "#fab387"; + } + { + name = "cpp"; + text = ""; + fg = "#74c7ec"; + } + { + name = "ui"; + text = ""; + fg = "#6c7086"; + } + { + name = "txt"; + text = "󰈙"; + fg = "#a6e3a1"; + } + { + name = "spec.ts"; + text = ""; + fg = "#74c7ec"; + } + { + name = "ccm"; + text = ""; + fg = "#f38ba8"; + } + { + name = "typoscript"; + text = ""; + fg = "#fab387"; + } + { + name = "typ"; + text = ""; + fg = "#89dceb"; + } + { + name = "txz"; + text = ""; + fg = "#fab387"; + } + { + name = "test.ts"; + text = ""; + fg = "#74c7ec"; + } + { + name = "tsx"; + text = ""; + fg = "#585b70"; + } + { + name = "mk"; + text = ""; + fg = "#7f849c"; + } + { + name = "webp"; + text = ""; + fg = "#7f849c"; + } + { + name = "opus"; + text = ""; + fg = "#6c7086"; + } + { + name = "bicep"; + text = ""; + fg = "#74c7ec"; + } + { + name = "ts"; + text = ""; + fg = "#74c7ec"; + } + { + name = "tres"; + text = ""; + fg = "#7f849c"; + } + { + name = "torrent"; + text = ""; + fg = "#94e2d5"; + } + { + name = "cxx"; + text = ""; + fg = "#74c7ec"; + } + { + name = "iso"; + text = ""; + fg = "#f2cdcd"; + } + { + name = "ixx"; + text = ""; + fg = "#74c7ec"; + } + { + name = "hxx"; + text = ""; + fg = "#7f849c"; + } + { + name = "gql"; + text = ""; + fg = "#f38ba8"; + } + { + name = "tmux"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "ini"; + text = ""; + fg = "#7f849c"; + } + { + name = "m3u8"; + text = "󰲹"; + fg = "#f38ba8"; + } + { + name = "image"; + text = ""; + fg = "#f2cdcd"; + } + { + name = "tfvars"; + text = ""; + fg = "#585b70"; + } + { + name = "tex"; + text = ""; + fg = "#45475a"; + } + { + name = "cbl"; + text = "⚙"; + fg = "#585b70"; + } + { + name = "flc"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "elc"; + text = ""; + fg = "#7f849c"; + } + { + name = "test.tsx"; + text = ""; + fg = "#585b70"; + } + { + name = "twig"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "sql"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "test.jsx"; + text = ""; + fg = "#74c7ec"; + } + { + name = "htm"; + text = ""; + fg = "#fab387"; + } + { + name = "gcode"; + text = "󰐫"; + fg = "#6c7086"; + } + { + name = "test.js"; + text = ""; + fg = "#f9e2af"; + } + { + name = "ino"; + text = ""; + fg = "#74c7ec"; + } + { + name = "tcl"; + text = "󰛓"; + fg = "#585b70"; + } + { + name = "cljs"; + text = ""; + fg = "#74c7ec"; + } + { + name = "tsconfig"; + text = ""; + fg = "#fab387"; + } + { + name = "img"; + text = ""; + fg = "#f2cdcd"; + } + { + name = "t"; + text = ""; + fg = "#74c7ec"; + } + { + name = "fcstd1"; + text = ""; + fg = "#f38ba8"; + } + { + name = "out"; + text = ""; + fg = "#45475a"; + } + { + name = "jsx"; + text = ""; + fg = "#74c7ec"; + } + { + name = "bash"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "edn"; + text = ""; + fg = "#74c7ec"; + } + { + name = "rss"; + text = ""; + fg = "#fab387"; + } + { + name = "flf"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "cache"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "sbt"; + text = ""; + fg = "#f38ba8"; + } + { + name = "cppm"; + text = ""; + fg = "#74c7ec"; + } + { + name = "svelte"; + text = ""; + fg = "#fab387"; + } + { + name = "mo"; + text = "∞"; + fg = "#7f849c"; + } + { + name = "sv"; + text = "󰍛"; + fg = "#a6e3a1"; + } + { + name = "ko"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "suo"; + text = ""; + fg = "#6c7086"; + } + { + name = "sldasm"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "icalendar"; + text = ""; + fg = "#313244"; + } + { + name = "go"; + text = ""; + fg = "#74c7ec"; + } + { + name = "sublime"; + text = ""; + fg = "#fab387"; + } + { + name = "stl"; + text = "󰆧"; + fg = "#7f849c"; + } + { + name = "mobi"; + text = ""; + fg = "#fab387"; + } + { + name = "graphql"; + text = ""; + fg = "#f38ba8"; + } + { + name = "m3u"; + text = "󰲹"; + fg = "#f38ba8"; + } + { + name = "cpy"; + text = "⚙"; + fg = "#585b70"; + } + { + name = "kdenlive"; + text = ""; + fg = "#89b4fa"; + } + { + name = "pyo"; + text = ""; + fg = "#f9e2af"; + } + { + name = "po"; + text = ""; + fg = "#74c7ec"; + } + { + name = "scala"; + text = ""; + fg = "#f38ba8"; + } + { + name = "exs"; + text = ""; + fg = "#7f849c"; + } + { + name = "odp"; + text = ""; + fg = "#fab387"; + } + { + name = "dump"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "stp"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "step"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "ste"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "aif"; + text = ""; + fg = "#74c7ec"; + } + { + name = "strings"; + text = ""; + fg = "#74c7ec"; + } + { + name = "cp"; + text = ""; + fg = "#74c7ec"; + } + { + name = "fsscript"; + text = ""; + fg = "#74c7ec"; + } + { + name = "mli"; + text = ""; + fg = "#fab387"; + } + { + name = "bak"; + text = "󰁯"; + fg = "#7f849c"; + } + { + name = "ssa"; + text = "󰨖"; + fg = "#f9e2af"; + } + { + name = "toml"; + text = ""; + fg = "#585b70"; + } + { + name = "makefile"; + text = ""; + fg = "#7f849c"; + } + { + name = "php"; + text = ""; + fg = "#7f849c"; + } + { + name = "zst"; + text = ""; + fg = "#fab387"; + } + { + name = "spec.jsx"; + text = ""; + fg = "#74c7ec"; + } + { + name = "kbx"; + text = "󰯄"; + fg = "#6c7086"; + } + { + name = "fbx"; + text = "󰆧"; + fg = "#7f849c"; + } + { + name = "blend"; + text = "󰂫"; + fg = "#fab387"; + } + { + name = "ifc"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "spec.js"; + text = ""; + fg = "#f9e2af"; + } + { + name = "so"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "desktop"; + text = ""; + fg = "#45475a"; + } + { + name = "sml"; + text = "λ"; + fg = "#fab387"; + } + { + name = "slvs"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "pp"; + text = ""; + fg = "#fab387"; + } + { + name = "ps1"; + text = "󰨊"; + fg = "#6c7086"; + } + { + name = "dropbox"; + text = ""; + fg = "#6c7086"; + } + { + name = "kicad_mod"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "bat"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "slim"; + text = ""; + fg = "#fab387"; + } + { + name = "skp"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "css"; + text = ""; + fg = "#89b4fa"; + } + { + name = "xul"; + text = ""; + fg = "#fab387"; + } + { + name = "ige"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "glb"; + text = ""; + fg = "#fab387"; + } + { + name = "ppt"; + text = "󰈧"; + fg = "#f38ba8"; + } + { + name = "sha512"; + text = "󰕥"; + fg = "#7f849c"; + } + { + name = "ics"; + text = ""; + fg = "#313244"; + } + { + name = "mdx"; + text = ""; + fg = "#74c7ec"; + } + { + name = "sha1"; + text = "󰕥"; + fg = "#7f849c"; + } + { + name = "f3d"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "ass"; + text = "󰨖"; + fg = "#f9e2af"; + } + { + name = "godot"; + text = ""; + fg = "#7f849c"; + } + { + name = "ifb"; + text = ""; + fg = "#313244"; + } + { + name = "cson"; + text = ""; + fg = "#f9e2af"; + } + { + name = "lib"; + text = ""; + fg = "#11111b"; + } + { + name = "luac"; + text = ""; + fg = "#74c7ec"; + } + { + name = "heex"; + text = ""; + fg = "#7f849c"; + } + { + name = "scm"; + text = "󰘧"; + fg = "#f5e0dc"; + } + { + name = "psd1"; + text = "󰨊"; + fg = "#7f849c"; + } + { + name = "sc"; + text = ""; + fg = "#f38ba8"; + } + { + name = "scad"; + text = ""; + fg = "#f9e2af"; + } + { + name = "kts"; + text = ""; + fg = "#6c7086"; + } + { + name = "svh"; + text = "󰍛"; + fg = "#a6e3a1"; + } + { + name = "mts"; + text = ""; + fg = "#74c7ec"; + } + { + name = "nfo"; + text = ""; + fg = "#f9e2af"; + } + { + name = "pck"; + text = ""; + fg = "#7f849c"; + } + { + name = "rproj"; + text = "󰗆"; + fg = "#a6e3a1"; + } + { + name = "rlib"; + text = ""; + fg = "#fab387"; + } + { + name = "cljd"; + text = ""; + fg = "#74c7ec"; + } + { + name = "ods"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "res"; + text = ""; + fg = "#f38ba8"; + } + { + name = "apk"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "haml"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "d.ts"; + text = ""; + fg = "#fab387"; + } + { + name = "razor"; + text = "󱦘"; + fg = "#585b70"; + } + { + name = "rake"; + text = ""; + fg = "#313244"; + } + { + name = "patch"; + text = ""; + fg = "#45475a"; + } + { + name = "cuh"; + text = ""; + fg = "#7f849c"; + } + { + name = "d"; + text = ""; + fg = "#f38ba8"; + } + { + name = "query"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "psb"; + text = ""; + fg = "#74c7ec"; + } + { + name = "nu"; + text = ">"; + fg = "#a6e3a1"; + } + { + name = "mov"; + text = ""; + fg = "#fab387"; + } + { + name = "lrc"; + text = "󰨖"; + fg = "#f9e2af"; + } + { + name = "pyx"; + text = ""; + fg = "#89b4fa"; + } + { + name = "pyw"; + text = ""; + fg = "#89b4fa"; + } + { + name = "cu"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "bazel"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "obj"; + text = "󰆧"; + fg = "#7f849c"; + } + { + name = "pyi"; + text = ""; + fg = "#f9e2af"; + } + { + name = "pyd"; + text = ""; + fg = "#f9e2af"; + } + { + name = "exe"; + text = ""; + fg = "#45475a"; + } + { + name = "pyc"; + text = ""; + fg = "#f9e2af"; + } + { + name = "fctb"; + text = ""; + fg = "#f38ba8"; + } + { + name = "part"; + text = ""; + fg = "#94e2d5"; + } + { + name = "blade.php"; + text = ""; + fg = "#f38ba8"; + } + { + name = "git"; + text = ""; + fg = "#fab387"; + } + { + name = "psd"; + text = ""; + fg = "#74c7ec"; + } + { + name = "qss"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "csv"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "psm1"; + text = "󰨊"; + fg = "#7f849c"; + } + { + name = "dconf"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "config.ru"; + text = ""; + fg = "#313244"; + } + { + name = "prisma"; + text = ""; + fg = "#6c7086"; + } + { + name = "conf"; + text = ""; + fg = "#7f849c"; + } + { + name = "clj"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "o"; + text = ""; + fg = "#45475a"; + } + { + name = "mp4"; + text = ""; + fg = "#fab387"; + } + { + name = "cc"; + text = ""; + fg = "#f38ba8"; + } + { + name = "kicad_prl"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "bz3"; + text = ""; + fg = "#fab387"; + } + { + name = "asc"; + text = "󰦝"; + fg = "#6c7086"; + } + { + name = "png"; + text = ""; + fg = "#7f849c"; + } + { + name = "android"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "pm"; + text = ""; + fg = "#74c7ec"; + } + { + name = "h"; + text = ""; + fg = "#7f849c"; + } + { + name = "pls"; + text = "󰲹"; + fg = "#f38ba8"; + } + { + name = "ipynb"; + text = ""; + fg = "#fab387"; + } + { + name = "pl"; + text = ""; + fg = "#74c7ec"; + } + { + name = "ads"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "sqlite"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "pdf"; + text = ""; + fg = "#585b70"; + } + { + name = "pcm"; + text = ""; + fg = "#6c7086"; + } + { + name = "ico"; + text = ""; + fg = "#f9e2af"; + } + { + name = "a"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "R"; + text = "󰟔"; + fg = "#6c7086"; + } + { + name = "ogg"; + text = ""; + fg = "#6c7086"; + } + { + name = "pxd"; + text = ""; + fg = "#89b4fa"; + } + { + name = "kdenlivetitle"; + text = ""; + fg = "#89b4fa"; + } + { + name = "jxl"; + text = ""; + fg = "#7f849c"; + } + { + name = "nswag"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "nim"; + text = ""; + fg = "#f9e2af"; + } + { + name = "bqn"; + text = "⎉"; + fg = "#6c7086"; + } + { + name = "cts"; + text = ""; + fg = "#74c7ec"; + } + { + name = "fcparam"; + text = ""; + fg = "#f38ba8"; + } + { + name = "rs"; + text = ""; + fg = "#fab387"; + } + { + name = "mpp"; + text = ""; + fg = "#74c7ec"; + } + { + name = "fdmdownload"; + text = ""; + fg = "#94e2d5"; + } + { + name = "pptx"; + text = "󰈧"; + fg = "#f38ba8"; + } + { + name = "jpeg"; + text = ""; + fg = "#7f849c"; + } + { + name = "bib"; + text = "󱉟"; + fg = "#f9e2af"; + } + { + name = "vhd"; + text = "󰍛"; + fg = "#a6e3a1"; + } + { + name = "m"; + text = ""; + fg = "#89b4fa"; + } + { + name = "js"; + text = ""; + fg = "#f9e2af"; + } + { + name = "eex"; + text = ""; + fg = "#7f849c"; + } + { + name = "tbc"; + text = "󰛓"; + fg = "#585b70"; + } + { + name = "astro"; + text = ""; + fg = "#f38ba8"; + } + { + name = "sha224"; + text = "󰕥"; + fg = "#7f849c"; + } + { + name = "xcplayground"; + text = ""; + fg = "#fab387"; + } + { + name = "el"; + text = ""; + fg = "#7f849c"; + } + { + name = "m4v"; + text = ""; + fg = "#fab387"; + } + { + name = "m4a"; + text = ""; + fg = "#74c7ec"; + } + { + name = "cs"; + text = "󰌛"; + fg = "#585b70"; + } + { + name = "hs"; + text = ""; + fg = "#7f849c"; + } + { + name = "tgz"; + text = ""; + fg = "#fab387"; + } + { + name = "fs"; + text = ""; + fg = "#74c7ec"; + } + { + name = "luau"; + text = ""; + fg = "#89b4fa"; + } + { + name = "dxf"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "download"; + text = ""; + fg = "#94e2d5"; + } + { + name = "cast"; + text = ""; + fg = "#fab387"; + } + { + name = "qrc"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "lua"; + text = ""; + fg = "#74c7ec"; + } + { + name = "lhs"; + text = ""; + fg = "#7f849c"; + } + { + name = "md"; + text = ""; + fg = "#cdd6f4"; + } + { + name = "leex"; + text = ""; + fg = "#7f849c"; + } + { + name = "ai"; + text = ""; + fg = "#f9e2af"; + } + { + name = "lck"; + text = ""; + fg = "#bac2de"; + } + { + name = "kt"; + text = ""; + fg = "#6c7086"; + } + { + name = "bicepparam"; + text = ""; + fg = "#7f849c"; + } + { + name = "hex"; + text = ""; + fg = "#6c7086"; + } + { + name = "zig"; + text = ""; + fg = "#fab387"; + } + { + name = "bzl"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "cljc"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "kicad_dru"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "fctl"; + text = ""; + fg = "#f38ba8"; + } + { + name = "f#"; + text = ""; + fg = "#74c7ec"; + } + { + name = "odt"; + text = ""; + fg = "#74c7ec"; + } + { + name = "conda"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "vala"; + text = ""; + fg = "#585b70"; + } + { + name = "erb"; + text = ""; + fg = "#313244"; + } + { + name = "mp3"; + text = ""; + fg = "#74c7ec"; + } + { + name = "bz2"; + text = ""; + fg = "#fab387"; + } + { + name = "coffee"; + text = ""; + fg = "#f9e2af"; + } + { + name = "cr"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "f90"; + text = "󱈚"; + fg = "#585b70"; + } + { + name = "jwmrc"; + text = ""; + fg = "#6c7086"; + } + { + name = "c++"; + text = ""; + fg = "#f38ba8"; + } + { + name = "fcscript"; + text = ""; + fg = "#f38ba8"; + } + { + name = "fods"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "cue"; + text = "󰲹"; + fg = "#f38ba8"; + } + { + name = "srt"; + text = "󰨖"; + fg = "#f9e2af"; + } + { + name = "info"; + text = ""; + fg = "#f9e2af"; + } + { + name = "hh"; + text = ""; + fg = "#7f849c"; + } + { + name = "sig"; + text = "λ"; + fg = "#fab387"; + } + { + name = "html"; + text = ""; + fg = "#fab387"; + } + { + name = "iges"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "kicad_wks"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "hbs"; + text = ""; + fg = "#fab387"; + } + { + name = "fcstd"; + text = ""; + fg = "#f38ba8"; + } + { + name = "gresource"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "sub"; + text = "󰨖"; + fg = "#f9e2af"; + } + { + name = "ical"; + text = ""; + fg = "#313244"; + } + { + name = "crdownload"; + text = ""; + fg = "#94e2d5"; + } + { + name = "pub"; + text = "󰷖"; + fg = "#f9e2af"; + } + { + name = "vue"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "gd"; + text = ""; + fg = "#7f849c"; + } + { + name = "fsx"; + text = ""; + fg = "#74c7ec"; + } + { + name = "mkv"; + text = ""; + fg = "#fab387"; + } + { + name = "py"; + text = ""; + fg = "#f9e2af"; + } + { + name = "kicad_sch"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "epub"; + text = ""; + fg = "#fab387"; + } + { + name = "env"; + text = ""; + fg = "#f9e2af"; + } + { + name = "magnet"; + text = ""; + fg = "#45475a"; + } + { + name = "elf"; + text = ""; + fg = "#45475a"; + } + { + name = "fodg"; + text = ""; + fg = "#f9e2af"; + } + { + name = "svg"; + text = "󰜡"; + fg = "#fab387"; + } + { + name = "dwg"; + text = "󰻫"; + fg = "#a6e3a1"; + } + { + name = "docx"; + text = "󰈬"; + fg = "#585b70"; + } + { + name = "pro"; + text = ""; + fg = "#f9e2af"; + } + { + name = "db"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "rb"; + text = ""; + fg = "#313244"; + } + { + name = "r"; + text = "󰟔"; + fg = "#6c7086"; + } + { + name = "scss"; + text = ""; + fg = "#f38ba8"; + } + { + name = "cow"; + text = "󰆚"; + fg = "#fab387"; + } + { + name = "gleam"; + text = ""; + fg = "#f5c2e7"; + } + { + name = "v"; + text = "󰍛"; + fg = "#a6e3a1"; + } + { + name = "kicad_pro"; + text = ""; + fg = "#f5e0dc"; + } + { + name = "liquid"; + text = ""; + fg = "#a6e3a1"; + } + { + name = "zip"; + text = ""; + fg = "#fab387"; + } + ]; +} diff --git a/hosts/thinkpad/home-manager/zen/chrome/userChrome.css b/hosts/thinkpad/home-manager/zen/chrome/userChrome.css new file mode 100644 index 0000000..b37a865 --- /dev/null +++ b/hosts/thinkpad/home-manager/zen/chrome/userChrome.css @@ -0,0 +1,113 @@ +/* Catppuccin Mocha Blue userChrome.css*/ + +@media (prefers-color-scheme: dark) { + :root { + --zen-colors-primary: #313244 !important; + --zen-primary-color: #89b4fa !important; + --zen-colors-secondary: #313244 !important; + --zen-colors-tertiary: #181825 !important; + --zen-colors-border: #89b4fa !important; + --toolbarbutton-icon-fill: #89b4fa !important; + --lwt-text-color: #cdd6f4 !important; + --toolbar-field-color: #cdd6f4 !important; + --tab-selected-textcolor: rgb(171, 197, 247) !important; + --toolbar-field-focus-color: #cdd6f4 !important; + --toolbar-color: #cdd6f4 !important; + --newtab-text-primary-color: #cdd6f4 !important; + --arrowpanel-color: #cdd6f4 !important; + --arrowpanel-background: #1e1e2e !important; + --sidebar-text-color: #cdd6f4 !important; + --lwt-sidebar-text-color: #cdd6f4 !important; + --lwt-sidebar-background-color: #11111b !important; + --toolbar-bgcolor: #313244 !important; + --newtab-background-color: #1e1e2e !important; + --zen-themed-toolbar-bg: #181825 !important; + --zen-main-browser-background: #181825 !important; + } + + #permissions-granted-icon { + color: #181825 !important; + } + + .sidebar-placesTree { + background-color: #1e1e2e !important; + } + + #zen-workspaces-button { + background-color: #1e1e2e !important; + } + + #TabsToolbar { + background-color: #181825 !important; + } + + #urlbar-background { + background-color: #1e1e2e !important; + } + + .content-shortcuts { + background-color: #1e1e2e !important; + border-color: #89b4fa !important; + } + + .urlbarView-url { + color: #89b4fa !important; + } + + #zenEditBookmarkPanelFaviconContainer { + background: #11111b !important; + } + + toolbar .toolbarbutton-1 { + &:not([disabled]) { + &:is([open], [checked]) + > :is( + .toolbarbutton-icon, + .toolbarbutton-text, + .toolbarbutton-badge-stack + ) { + fill: #11111b; + } + } + } + + .identity-color-blue { + --identity-tab-color: #89b4fa !important; + --identity-icon-color: #89b4fa !important; + } + + .identity-color-turquoise { + --identity-tab-color: #94e2d5 !important; + --identity-icon-color: #94e2d5 !important; + } + + .identity-color-green { + --identity-tab-color: #a6e3a1 !important; + --identity-icon-color: #a6e3a1 !important; + } + + .identity-color-yellow { + --identity-tab-color: #f9e2af !important; + --identity-icon-color: #f9e2af !important; + } + + .identity-color-orange { + --identity-tab-color: #fab387 !important; + --identity-icon-color: #fab387 !important; + } + + .identity-color-red { + --identity-tab-color: #f38ba8 !important; + --identity-icon-color: #f38ba8 !important; + } + + .identity-color-pink { + --identity-tab-color: #f5c2e7 !important; + --identity-icon-color: #f5c2e7 !important; + } + + .identity-color-purple { + --identity-tab-color: #cba6f7 !important; + --identity-icon-color: #cba6f7 !important; + } +} diff --git a/hosts/thinkpad/home-manager/zen/chrome/userContent.css b/hosts/thinkpad/home-manager/zen/chrome/userContent.css new file mode 100644 index 0000000..036655d --- /dev/null +++ b/hosts/thinkpad/home-manager/zen/chrome/userContent.css @@ -0,0 +1,158 @@ +/* Catppuccin Mocha Blue userContent.css*/ + +@media (prefers-color-scheme: dark) { + /* Common variables affecting all pages */ + @-moz-document url-prefix("about:") { + :root { + --in-content-page-color: #cdd6f4 !important; + --color-accent-primary: #89b4fa !important; + --color-accent-primary-hover: rgb(163, 197, 251) !important; + --color-accent-primary-active: rgb(138, 153, 250) !important; + background-color: #1e1e2e !important; + --in-content-page-background: #1e1e2e !important; + } + } + + /* Variables and styles specific to about:newtab and about:home */ + @-moz-document url("about:newtab"), url("about:home") { + :root { + --newtab-background-color: #1e1e2e !important; + --newtab-background-color-secondary: #313244 !important; + --newtab-element-hover-color: #313244 !important; + --newtab-text-primary-color: #cdd6f4 !important; + --newtab-wordmark-color: #cdd6f4 !important; + --newtab-primary-action-background: #89b4fa !important; + } + + .icon { + color: #89b4fa !important; + } + + .search-wrapper .logo-and-wordmark .logo { + background: + url("zen-logo-mocha.svg"), + url("https://raw.githubusercontent.com/IAmJafeth/zen-browser/main/themes/Mocha/Blue/zen-logo-mocha.svg") + no-repeat center !important; + display: inline-block !important; + height: 82px !important; + width: 82px !important; + background-size: 82px !important; + } + + @media (max-width: 609px) { + .search-wrapper .logo-and-wordmark .logo { + background-size: 64px !important; + height: 64px !important; + width: 64px !important; + } + } + + .card-outer:is(:hover, :focus, .active):not(.placeholder) .card-title { + color: #89b4fa !important; + } + + .top-site-outer .search-topsite { + background-color: #89b4fa !important; + } + + .compact-cards .card-outer .card-context .card-context-icon.icon-download { + fill: #a6e3a1 !important; + } + } + + /* Variables and styles specific to about:preferences */ + @-moz-document url-prefix("about:preferences") { + :root { + --zen-colors-tertiary: #181825 !important; + --in-content-text-color: #cdd6f4 !important; + --link-color: #89b4fa !important; + --link-color-hover: rgb(163, 197, 251) !important; + --zen-colors-primary: #313244 !important; + --in-content-box-background: #313244 !important; + --zen-primary-color: #89b4fa !important; + } + + groupbox, + moz-card { + background: #1e1e2e !important; + } + + button, + groupbox menulist { + background: #313244 !important; + color: #cdd6f4 !important; + } + + .main-content { + background-color: #11111b !important; + } + + .identity-color-blue { + --identity-tab-color: #8aadf4 !important; + --identity-icon-color: #8aadf4 !important; + } + + .identity-color-turquoise { + --identity-tab-color: #8bd5ca !important; + --identity-icon-color: #8bd5ca !important; + } + + .identity-color-green { + --identity-tab-color: #a6da95 !important; + --identity-icon-color: #a6da95 !important; + } + + .identity-color-yellow { + --identity-tab-color: #eed49f !important; + --identity-icon-color: #eed49f !important; + } + + .identity-color-orange { + --identity-tab-color: #f5a97f !important; + --identity-icon-color: #f5a97f !important; + } + + .identity-color-red { + --identity-tab-color: #ed8796 !important; + --identity-icon-color: #ed8796 !important; + } + + .identity-color-pink { + --identity-tab-color: #f5bde6 !important; + --identity-icon-color: #f5bde6 !important; + } + + .identity-color-purple { + --identity-tab-color: #c6a0f6 !important; + --identity-icon-color: #c6a0f6 !important; + } + } + + /* Variables and styles specific to about:addons */ + @-moz-document url-prefix("about:addons") { + :root { + --zen-dark-color-mix-base: #181825 !important; + --background-color-box: #1e1e2e !important; + } + } + + /* Variables and styles specific to about:protections */ + @-moz-document url-prefix("about:protections") { + :root { + --zen-primary-color: #1e1e2e !important; + --social-color: #cba6f7 !important; + --coockie-color: #89dceb !important; + --fingerprinter-color: #f9e2af !important; + --cryptominer-color: #b4befe !important; + --tracker-color: #a6e3a1 !important; + --in-content-primary-button-background-hover: rgb(81, 83, 105) !important; + --in-content-primary-button-text-color-hover: #cdd6f4 !important; + --in-content-primary-button-background: #45475a !important; + --in-content-primary-button-text-color: #cdd6f4 !important; + } + + .card { + background-color: #313244 !important; + } + } +} diff --git a/hosts/thinkpad/home-manager/zen/chrome/zen-logo.svg b/hosts/thinkpad/home-manager/zen/chrome/zen-logo.svg new file mode 100644 index 0000000..3038ff2 --- /dev/null +++ b/hosts/thinkpad/home-manager/zen/chrome/zen-logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/hosts/thinkpad/home-manager/zen/default.nix b/hosts/thinkpad/home-manager/zen/default.nix new file mode 100644 index 0000000..12c5207 --- /dev/null +++ b/hosts/thinkpad/home-manager/zen/default.nix @@ -0,0 +1,12 @@ +{ pkgs, inputs, ... }: + +{ + # TODO programatically get default name + home = { + file.".zen/xdaxqlov.default/chrome" = { + source = ./chrome; + recursive = true; + }; + packages = with pkgs; [ inputs.zen-browser.packages.${system}.default ]; # Beta + }; +} diff --git a/hosts/thinkpad/modules/battery.nix b/hosts/thinkpad/modules/battery.nix new file mode 100644 index 0000000..0dbad90 --- /dev/null +++ b/hosts/thinkpad/modules/battery.nix @@ -0,0 +1,6 @@ +{ + services = { + upower.enable = true; + power-profiles-daemon.enable = true; + }; +} diff --git a/hosts/thinkpad/modules/bluetooth.nix b/hosts/thinkpad/modules/bluetooth.nix new file mode 100644 index 0000000..a11b59f --- /dev/null +++ b/hosts/thinkpad/modules/bluetooth.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = [ + pkgs.bluez + ]; + + hardware.bluetooth = { + enable = true; + powerOnBoot = true; # powers up the default Bluetooth controller on boot + }; + + services.blueman.enable = true; +} diff --git a/hosts/thinkpad/modules/default.nix b/hosts/thinkpad/modules/default.nix new file mode 100644 index 0000000..de7f5de --- /dev/null +++ b/hosts/thinkpad/modules/default.nix @@ -0,0 +1,19 @@ +{ + imports = [ + ./battery.nix + ./bluetooth.nix + ./development.nix + ./fonts.nix + ./gaming + ./gnome + ./hardware + ./locale.nix + ./networking.nix + ./nix-helper.nix + ./hyprland + ./sddm.nix + ./security.nix + ./shell.nix + ./qt.nix + ]; +} diff --git a/hosts/thinkpad/modules/development.nix b/hosts/thinkpad/modules/development.nix new file mode 100644 index 0000000..d0cde6b --- /dev/null +++ b/hosts/thinkpad/modules/development.nix @@ -0,0 +1,41 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + # IDEs + jetbrains.rust-rover + jetbrains.webstorm + jetbrains.rider + vscodium # TODO set up extensions + # Tools + dotnet-sdk_9 + dotnet-aspnetcore_9 + git + rustup + nodejs_22 + pnpm + just + gcc # Required for C, Rust and others + # Language servers + nixd + nil + # Formatters + nixfmt-rfc-style + treefmt + nodePackages.prettier + shfmt + ]; + + virtualisation.docker = { + enable = true; + storageDriver = "btrfs"; + rootless = { + enable = true; + setSocketVariable = true; + }; + }; + + services.ollama = { + enable = true; + }; +} diff --git a/hosts/thinkpad/modules/fonts.nix b/hosts/thinkpad/modules/fonts.nix new file mode 100644 index 0000000..c201c85 --- /dev/null +++ b/hosts/thinkpad/modules/fonts.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + font-awesome # Icons + ]; + + fonts = + let + theme = import ../theme.nix; + in + { + fontconfig.enable = true; + packages = with pkgs; [ + (nerdfonts.override { fonts = [ theme.nerdFont ]; }) + jetbrains-mono + # The line below will replace the lines above in 25.05 + # nerd-fonts.jetbrains-mono + font-awesome + ]; + }; + +} diff --git a/hosts/thinkpad/modules/gaming/default.nix b/hosts/thinkpad/modules/gaming/default.nix new file mode 100644 index 0000000..79f3794 --- /dev/null +++ b/hosts/thinkpad/modules/gaming/default.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +{ + imports = [ + ./steam.nix + ]; + + environment.systemPackages = with pkgs; [ + heroic + wine + ]; +} diff --git a/hosts/thinkpad/modules/gaming/steam.nix b/hosts/thinkpad/modules/gaming/steam.nix new file mode 100644 index 0000000..65035f8 --- /dev/null +++ b/hosts/thinkpad/modules/gaming/steam.nix @@ -0,0 +1,8 @@ +{ + programs.steam = { + enable = true; + remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play + dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server + localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers + }; +} diff --git a/hosts/thinkpad/modules/gnome/default.nix b/hosts/thinkpad/modules/gnome/default.nix new file mode 100644 index 0000000..0a39f32 --- /dev/null +++ b/hosts/thinkpad/modules/gnome/default.nix @@ -0,0 +1,28 @@ +{ pkgs, ... }: + +{ + imports = [ + ./nautilus.nix + ]; + + environment.systemPackages = with pkgs; [ + # adw-gtk3 + glib + adwaita-icon-theme + gnomeExtensions.appindicator + # gnome-extension-manager + loupe + gnome-calculator + gnome-disk-utility + gnome-clocks + papers # PDFReader + ]; + + programs.dconf.enable = true; # Required for some gnome applications + + services = { + gnome.gnome-keyring.enable = true; + gvfs.enable = true; # Gnome Virtual File-system. Required for various things in nautilus + udev.packages = with pkgs; [ gnome-settings-daemon ]; + }; +} diff --git a/hosts/thinkpad/modules/gnome/nautilus.nix b/hosts/thinkpad/modules/gnome/nautilus.nix new file mode 100644 index 0000000..523bb95 --- /dev/null +++ b/hosts/thinkpad/modules/gnome/nautilus.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: +let + common = import ../../common.nix; +in +{ + environment.systemPackages = with pkgs; [ + nautilus + ffmpegthumbnailer # Thumbnails + ]; + + programs.nautilus-open-any-terminal = { + enable = true; + terminal = common.default.terminal; + }; +} diff --git a/hosts/thinkpad/modules/hardware/audio.nix b/hosts/thinkpad/modules/hardware/audio.nix new file mode 100644 index 0000000..2b3429e --- /dev/null +++ b/hosts/thinkpad/modules/hardware/audio.nix @@ -0,0 +1,33 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-bad + + wireplumber + playerctl # Interaction with audioplayers and browsers + pavucontrol # GUI + spotify + ]; + + hardware.pulseaudio.enable = false; # Will be moved to services in 25.05 + + security.rtkit.enable = true; # Enable RealtimeKit for audio purposes + + services = { + pipewire = { + enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + pulse.enable = true; + # Uncomment the following line if you want to use JACK applications + # jack.enable = true; + }; + # pulseaudio.enable = false; # TODO uncommenct at 25.05 + }; +} diff --git a/hosts/thinkpad/modules/hardware/default.nix b/hosts/thinkpad/modules/hardware/default.nix new file mode 100644 index 0000000..ffd2b30 --- /dev/null +++ b/hosts/thinkpad/modules/hardware/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./audio.nix + ./graphics + ./hardware-configuration.nix + ./keyboard.nix + ]; +} diff --git a/hosts/thinkpad/modules/hardware/graphics/default.nix b/hosts/thinkpad/modules/hardware/graphics/default.nix new file mode 100644 index 0000000..eaade71 --- /dev/null +++ b/hosts/thinkpad/modules/hardware/graphics/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ ]; + + # Enable OpenGL + hardware.graphics.enable = true; +} diff --git a/hosts/thinkpad/modules/hardware/hardware-configuration.nix b/hosts/thinkpad/modules/hardware/hardware-configuration.nix new file mode 100644 index 0000000..a46c293 --- /dev/null +++ b/hosts/thinkpad/modules/hardware/hardware-configuration.nix @@ -0,0 +1,57 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ + config, + lib, + pkgs, + modulesPath, + ... +}: + +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ + "nvme" + "xhci_pci" + "usb_storage" + "sd_mod" + "sdhci_pci" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/5ac9c425-35ae-47d5-a683-68ee0dbfc2bc"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-99b73f22-3fa1-42b5-ad48-54b0ccff72cc".device = + "/dev/disk/by-uuid/99b73f22-3fa1-42b5-ad48-54b0ccff72cc"; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/3CFB-D12A"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp2s0f0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/thinkpad/modules/hardware/keyboard.nix b/hosts/thinkpad/modules/hardware/keyboard.nix new file mode 100644 index 0000000..8840a94 --- /dev/null +++ b/hosts/thinkpad/modules/hardware/keyboard.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + via + ]; + + hardware.keyboard.qmk.enable = true; + + services.udev.packages = with pkgs; [ via ]; +} diff --git a/hosts/thinkpad/modules/hyprland/default.nix b/hosts/thinkpad/modules/hyprland/default.nix new file mode 100644 index 0000000..9e7c4a7 --- /dev/null +++ b/hosts/thinkpad/modules/hyprland/default.nix @@ -0,0 +1,25 @@ +# System configurations for Hyprland. For home configs, see ./home-manager/hyprland +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + xdg-desktop-portal-hyprland + hyprpolkitagent # Auth deamon providing modals for password auth + hyprshot # Screenshots + hyprsunset # Blue light filter + unstable.hyprsysteminfo + unstable.hyprland-qtutils + unstable.hyprland-qt-support + ]; + + programs = { + hyprland = { + enable = true; + xwayland.enable = true; + withUWSM = true; + }; + hyprlock.enable = true; # Lock screen + }; + + services.hypridle.enable = true; # Lock when unused +} diff --git a/hosts/thinkpad/modules/locale.nix b/hosts/thinkpad/modules/locale.nix new file mode 100644 index 0000000..08677ca --- /dev/null +++ b/hosts/thinkpad/modules/locale.nix @@ -0,0 +1,37 @@ +# TODO move locale config for hyprland here +let + utf-8 = "UTF-8"; + en = "en_GB.${utf-8}"; + nb = "nb_NO.${utf-8}"; + common = import ../common.nix; +in +{ + # Configure console keymap + console.keyMap = "uk"; + + # Select internationalisation properties. + i18n = { + defaultLocale = en; + supportedLocales = [ + "${en}/${utf-8}" + "${nb}/${utf-8}" + ]; + extraLocaleSettings = { + LC_ADDRESS = nb; + LC_IDENTIFICATION = nb; + LC_MEASUREMENT = nb; + LC_MONETARY = nb; + LC_NAME = nb; + LC_NUMERIC = nb; + LC_PAPER = nb; + LC_TELEPHONE = nb; + LC_TIME = nb; + }; + }; + + # Configure keymaps + services.xserver.xkb = common.keymaps; + + # Set your time zone. + time.timeZone = "Europe/Oslo"; +} diff --git a/hosts/thinkpad/modules/networking.nix b/hosts/thinkpad/modules/networking.nix new file mode 100644 index 0000000..23db0c6 --- /dev/null +++ b/hosts/thinkpad/modules/networking.nix @@ -0,0 +1,23 @@ +let + common = import ../common.nix; +in +{ + networking = { + networkmanager.enable = true; + hostName = common.hostname; + # wireless.enable = true; # Enables wireless support via wpa_supplicant. + }; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + programs.ssh.enableAskPassword = false; + + services.tailscale.enable = true; +} diff --git a/hosts/thinkpad/modules/nix-helper.nix b/hosts/thinkpad/modules/nix-helper.nix new file mode 100644 index 0000000..f60cc0e --- /dev/null +++ b/hosts/thinkpad/modules/nix-helper.nix @@ -0,0 +1,12 @@ +# Nix-Helper: github.com/viperML/nh +{ + programs.nh = { + enable = true; + flake = ../.; + clean = { + enable = true; + dates = "weekly"; + extraArgs = "--keep-since 30d"; + }; + }; +} diff --git a/hosts/thinkpad/modules/qt.nix b/hosts/thinkpad/modules/qt.nix new file mode 100644 index 0000000..789cb01 --- /dev/null +++ b/hosts/thinkpad/modules/qt.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: + +{ + environment = { + sessionVariables = { + QT_QPA_PLATFORMTHEME = "qt6ct"; + QT_QPA_PLATFORM = "wayland"; # Enable Wayland for QT + }; + systemPackages = with pkgs.kdePackages; [ + qtwayland + qtsvg + qt6ct + ]; + }; + + qt.enable = true; +} diff --git a/hosts/thinkpad/modules/sddm.nix b/hosts/thinkpad/modules/sddm.nix new file mode 100644 index 0000000..ea1ef65 --- /dev/null +++ b/hosts/thinkpad/modules/sddm.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: +let + theme = import ../theme.nix; + flavor = theme.flavor; +in +{ + environment.systemPackages = with pkgs; [ + (catppuccin-sddm.override { + flavor = flavor; + font = theme.nerdFont; + fontSize = "9"; + background = "${../wallpapers/catppuccin_high.png}"; + loginBackground = true; + }) + ]; + + services.displayManager.sddm = { + enable = true; + theme = "catppuccin-${flavor}"; + wayland.enable = true; + package = pkgs.kdePackages.sddm; + }; +} diff --git a/hosts/thinkpad/modules/security.nix b/hosts/thinkpad/modules/security.nix new file mode 100644 index 0000000..ea466d7 --- /dev/null +++ b/hosts/thinkpad/modules/security.nix @@ -0,0 +1,68 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + gnupg + yubioath-flutter + ]; + + programs.gnupg.agent.enable = true; + + security = { + pam = { + services = { + gdm-fingerprint.text = '' + auth required pam_shells.so + auth requisite pam_nologin.so + auth requisite pam_faillock.so preauth + auth required ${pkgs.fprintd}/lib/security/pam_fprintd.so + auth optional pam_permit.so + auth required pam_env.so + auth [success=ok default=1] ${pkgs.gdm}/lib/security/pam_gdm.so + auth optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so + + account include login + + password required pam_deny.so + + session include login + session optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start + ''; + login = { + fprintAuth = false; + u2fAuth = false; # U2F and password + }; + sudo.u2fAuth = true; # U2F or password + }; + u2f = { + enable = true; + settings = { + cue = true; # Prompt: Please touch the device + interactive = false; # Prompt: Insert your U2F device, then press ENTER. + }; + }; + }; + }; + + # Start the driver at boot + systemd.services.fprintd = { + wantedBy = [ "multi-user.target" ]; + serviceConfig.Type = "simple"; + }; + + # Install the driver + services.fprintd = { + enable = true; + tod.driver = pkgs.libfprint-2-tod1-goodix-550a; # Goodix 550a driver (from Lenovo) + }; + + # however for focaltech 2808:a658, use fprintd with overidden package (without tod) + # services.fprintd.package = pkgs.fprintd.override { + # libfprint = pkgs.libfprint-focaltech-2808-a658; + # }; + + services = { + pcscd.enable = true; # Required for Yubikey + udev.packages = with pkgs; [ yubikey-personalization ]; + }; +} diff --git a/hosts/thinkpad/modules/shell.nix b/hosts/thinkpad/modules/shell.nix new file mode 100644 index 0000000..84b5931 --- /dev/null +++ b/hosts/thinkpad/modules/shell.nix @@ -0,0 +1,19 @@ +# For Fish dotfiles, see: /home-manager/fish.nix +{ pkgs, ... }: + +{ + programs = { + bash = { + # Starts the OS using Bash, then starts fish if it's not running + interactiveShellInit = '' + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; + }; + + fish.enable = true; + }; +} -- 2.47.2 From 06494737096a9aa251dda7880a31fc528791dde6 Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Sat, 12 Apr 2025 20:25:10 +0200 Subject: [PATCH 04/15] :sparkles: Added pi4 to systems, moved getSecret function to lib --- README.md | 2 +- flake.nix | 14 +++++++++++--- .../home-manager/hyprland/hyprpanel/default.nix | 2 +- lib/default.nix | 3 +++ shared/common.nix | 7 +------ 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 90098e9..cd278b0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # NixOS Configurations -My NixOS configurations with dotfiles for my desktop +My NixOS configurations with dotfiles for my systems. ![Screenshot of desktop](./.gitea/assets/desktop.png) diff --git a/flake.nix b/flake.nix index 03f7a5b..534c7e6 100644 --- a/flake.nix +++ b/flake.nix @@ -37,9 +37,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; # Bar - hyprpanel = { - url = "github:Jas-SinghFSU/HyprPanel"; - }; + hyprpanel.url = "github:Jas-SinghFSU/HyprPanel"; # Spotify spicetify-nix = { url = "github:Gerg-L/spicetify-nix"; @@ -87,6 +85,12 @@ hostName = "thinkpad"; system = "x86_64-linux"; } + { + hostName = "pi4"; + system = "aarch64-linux"; + enableWayland = false; + } + # TODO Homelab config ]; in @@ -110,7 +114,9 @@ password = "temp"; }, version ? common.version, + enableWayland ? true, }: + { name = hostName; value = nixpkgs.lib.nixosSystem { @@ -124,6 +130,7 @@ lib hostName version + enableWayland ; isDarwin = false; }; @@ -144,6 +151,7 @@ libHm hostName version + enableWayland ; }; users.${user.name} = import ./hosts/${hostName}/home-manager; diff --git a/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix b/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix index 08add4a..784143b 100644 --- a/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix +++ b/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix @@ -82,7 +82,7 @@ weather = { unit = "metric"; location = "Bergen, Norway"; - key = common.secret.weatherApiKey lib; + key = with lib.custom; getSecret (relativeToRoot "shared/secrets/weather-api-key"); }; }; diff --git a/lib/default.nix b/lib/default.nix index 6fb3445..5093e51 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -2,8 +2,11 @@ { lib, ... }: { + getSecret = with lib.strings; filePath: trim (removeSuffix "\n" (builtins.readFile filePath)); + # use path relative to the root of the project relativeToRoot = lib.path.append ../.; + scanPaths = path: builtins.map (f: (path + "/${f}")) ( diff --git a/shared/common.nix b/shared/common.nix index 519a3c4..94596a2 100644 --- a/shared/common.nix +++ b/shared/common.nix @@ -3,7 +3,7 @@ rec { browser = "zen"; calculator = "gnome-calculator"; fileManager = "nautilus"; - imageViewer = "loupe"; + imageViewer = "imv"; lockScreen = "hyprlock"; terminal = "kitty"; }; @@ -31,9 +31,4 @@ rec { # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.version = "24.11"; - - secret.weatherApiKey = lib: loadSecret lib ./secrets/weather-api-key; - - loadSecret = - lib: filePath: lib.strings.trim (lib.strings.removeSuffix "\n" (builtins.readFile filePath)); } -- 2.47.2 From a0537f563474b4e6c7e7195ff3e0c9db89dc700f Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Sat, 12 Apr 2025 23:29:10 +0200 Subject: [PATCH 05/15] :sparkles: Moved common home-manager config to shared/home-manager --- hosts/desktop/home-manager/default.nix | 49 +- hosts/thinkpad/home-manager/btop.nix | 9 - hosts/thinkpad/home-manager/cava/cava.png | Bin 2176 -> 0 bytes hosts/thinkpad/home-manager/cava/default.nix | 29 - hosts/thinkpad/home-manager/cursors.nix | 16 - .../home-manager/default-applications.nix | 24 - hosts/thinkpad/home-manager/default.nix | 61 +- .../home-manager/development/default.nix | 9 - .../thinkpad/home-manager/development/git.nix | 33 - .../development/nixvim/default.nix | 77 - .../thinkpad/home-manager/development/zed.nix | 57 - hosts/thinkpad/home-manager/fastfetch.nix | 60 - hosts/thinkpad/home-manager/fish.nix | 57 - hosts/thinkpad/home-manager/freetube.nix | 53 - hosts/thinkpad/home-manager/gtk.nix | 11 - .../thinkpad/home-manager/hyprland/binds.nix | 103 - .../home-manager/hyprland/default.nix | 16 +- .../hyprland/hypridle/default.nix | 38 - .../hyprland/hyprlock/default.nix | 89 - .../home-manager/hyprland/hyprpanel.nix | 16 + .../hyprland/hyprpanel/default.nix | 123 - .../home-manager/hyprland/hyprpaper.nix | 46 +- .../home-manager/hyprland/hyprshot.nix | 19 - .../home-manager/hyprland/settings.nix | 121 +- hosts/thinkpad/home-manager/kitty.nix | 25 - hosts/thinkpad/home-manager/mpv.nix | 29 - hosts/thinkpad/home-manager/nextcloud.nix | 6 - hosts/thinkpad/home-manager/spicetify.nix | 35 - .../yazi/catppuccin-mocha.tmTheme | 2081 ----------- hosts/thinkpad/home-manager/yazi/default.nix | 327 -- hosts/thinkpad/home-manager/yazi/icons.nix | 3146 ----------------- hosts/thinkpad/home-manager/zen/default.nix | 2 +- .../desktop => shared}/home-manager/btop.nix | 0 .../home-manager/cava/cava.png | Bin .../home-manager/cava/default.nix | 0 .../home-manager/cursors.nix | 0 .../home-manager/default-applications.nix | 0 shared/home-manager/default.nix | 53 + .../home-manager/development/default.nix | 0 .../home-manager/development/git.nix | 0 .../development/nixvim/default.nix | 0 .../home-manager/development/zed.nix | 0 .../home-manager/fastfetch.nix | 0 .../desktop => shared}/home-manager/fish.nix | 0 .../home-manager/freetube.nix | 0 .../desktop => shared}/home-manager/gpg.nix | 0 .../desktop => shared}/home-manager/gtk.nix | 0 .../home-manager/hyprland/binds.nix | 0 .../home-manager/hyprland/default.nix | 0 .../hyprland/hypridle/default.nix | 0 .../hyprland/hyprlock/default.nix | 0 .../hyprland/hyprpanel/default.nix | 0 .../home-manager/hyprland/hyprpaper.nix | 0 .../home-manager/hyprland/hyprshot.nix | 0 .../home-manager/hyprland/settings.nix | 0 .../desktop => shared}/home-manager/kitty.nix | 0 .../home-manager/media/default.nix | 0 .../home-manager/media/imv.nix | 0 .../home-manager/media/mpv.nix | 0 .../home-manager/nextcloud.nix | 0 .../home-manager/rofi/catppuccin-mocha.rasi | 0 .../home-manager/rofi/config.rasi | 0 .../home-manager/rofi/default.nix | 0 .../home-manager/rofi/rofimoji.rc | 0 .../home-manager/spicetify.nix | 0 .../yazi/catppuccin-mocha.tmTheme | 0 .../home-manager/yazi/default.nix | 0 .../home-manager/yazi/icons.nix | 0 .../home-manager/zen/chrome/userChrome.css | 0 .../home-manager/zen/chrome/userContent.css | 0 .../home-manager/zen/chrome/zen-logo.svg | 0 .../home-manager/zen/default.nix | 0 72 files changed, 104 insertions(+), 6716 deletions(-) delete mode 100644 hosts/thinkpad/home-manager/btop.nix delete mode 100644 hosts/thinkpad/home-manager/cava/cava.png delete mode 100644 hosts/thinkpad/home-manager/cava/default.nix delete mode 100644 hosts/thinkpad/home-manager/cursors.nix delete mode 100644 hosts/thinkpad/home-manager/default-applications.nix delete mode 100644 hosts/thinkpad/home-manager/development/default.nix delete mode 100644 hosts/thinkpad/home-manager/development/git.nix delete mode 100644 hosts/thinkpad/home-manager/development/nixvim/default.nix delete mode 100644 hosts/thinkpad/home-manager/development/zed.nix delete mode 100644 hosts/thinkpad/home-manager/fastfetch.nix delete mode 100644 hosts/thinkpad/home-manager/fish.nix delete mode 100644 hosts/thinkpad/home-manager/freetube.nix delete mode 100644 hosts/thinkpad/home-manager/gtk.nix delete mode 100644 hosts/thinkpad/home-manager/hyprland/binds.nix delete mode 100644 hosts/thinkpad/home-manager/hyprland/hypridle/default.nix delete mode 100644 hosts/thinkpad/home-manager/hyprland/hyprlock/default.nix create mode 100644 hosts/thinkpad/home-manager/hyprland/hyprpanel.nix delete mode 100644 hosts/thinkpad/home-manager/hyprland/hyprpanel/default.nix delete mode 100644 hosts/thinkpad/home-manager/hyprland/hyprshot.nix delete mode 100644 hosts/thinkpad/home-manager/kitty.nix delete mode 100644 hosts/thinkpad/home-manager/mpv.nix delete mode 100644 hosts/thinkpad/home-manager/nextcloud.nix delete mode 100644 hosts/thinkpad/home-manager/spicetify.nix delete mode 100644 hosts/thinkpad/home-manager/yazi/catppuccin-mocha.tmTheme delete mode 100644 hosts/thinkpad/home-manager/yazi/default.nix delete mode 100644 hosts/thinkpad/home-manager/yazi/icons.nix rename {hosts/desktop => shared}/home-manager/btop.nix (100%) rename {hosts/desktop => shared}/home-manager/cava/cava.png (100%) rename {hosts/desktop => shared}/home-manager/cava/default.nix (100%) rename {hosts/desktop => shared}/home-manager/cursors.nix (100%) rename {hosts/desktop => shared}/home-manager/default-applications.nix (100%) create mode 100644 shared/home-manager/default.nix rename {hosts/desktop => shared}/home-manager/development/default.nix (100%) rename {hosts/desktop => shared}/home-manager/development/git.nix (100%) rename {hosts/desktop => shared}/home-manager/development/nixvim/default.nix (100%) rename {hosts/desktop => shared}/home-manager/development/zed.nix (100%) rename {hosts/desktop => shared}/home-manager/fastfetch.nix (100%) rename {hosts/desktop => shared}/home-manager/fish.nix (100%) rename {hosts/desktop => shared}/home-manager/freetube.nix (100%) rename {hosts/desktop => shared}/home-manager/gpg.nix (100%) rename {hosts/desktop => shared}/home-manager/gtk.nix (100%) rename {hosts/desktop => shared}/home-manager/hyprland/binds.nix (100%) rename {hosts/desktop => shared}/home-manager/hyprland/default.nix (100%) rename {hosts/desktop => shared}/home-manager/hyprland/hypridle/default.nix (100%) rename {hosts/desktop => shared}/home-manager/hyprland/hyprlock/default.nix (100%) rename {hosts/desktop => shared}/home-manager/hyprland/hyprpanel/default.nix (100%) rename {hosts/desktop => shared}/home-manager/hyprland/hyprpaper.nix (100%) rename {hosts/desktop => shared}/home-manager/hyprland/hyprshot.nix (100%) rename {hosts/desktop => shared}/home-manager/hyprland/settings.nix (100%) rename {hosts/desktop => shared}/home-manager/kitty.nix (100%) rename {hosts/desktop => shared}/home-manager/media/default.nix (100%) rename {hosts/desktop => shared}/home-manager/media/imv.nix (100%) rename {hosts/desktop => shared}/home-manager/media/mpv.nix (100%) rename {hosts/desktop => shared}/home-manager/nextcloud.nix (100%) rename {hosts/desktop => shared}/home-manager/rofi/catppuccin-mocha.rasi (100%) rename {hosts/desktop => shared}/home-manager/rofi/config.rasi (100%) rename {hosts/desktop => shared}/home-manager/rofi/default.nix (100%) rename {hosts/desktop => shared}/home-manager/rofi/rofimoji.rc (100%) rename {hosts/desktop => shared}/home-manager/spicetify.nix (100%) rename {hosts/desktop => shared}/home-manager/yazi/catppuccin-mocha.tmTheme (100%) rename {hosts/desktop => shared}/home-manager/yazi/default.nix (100%) rename {hosts/desktop => shared}/home-manager/yazi/icons.nix (100%) rename {hosts/desktop => shared}/home-manager/zen/chrome/userChrome.css (100%) rename {hosts/desktop => shared}/home-manager/zen/chrome/userContent.css (100%) rename {hosts/desktop => shared}/home-manager/zen/chrome/zen-logo.svg (100%) rename {hosts/desktop => shared}/home-manager/zen/default.nix (100%) diff --git a/hosts/desktop/home-manager/default.nix b/hosts/desktop/home-manager/default.nix index b555ebf..31e14ce 100644 --- a/hosts/desktop/home-manager/default.nix +++ b/hosts/desktop/home-manager/default.nix @@ -1,53 +1,10 @@ { - inputs, - outputs, - common, + lib, ... }: -let - username = common.username; - dir = common.dir; -in + { imports = [ - inputs.catppuccin.homeModules.catppuccin - ./btop.nix - ./cava - ./cursors.nix - ./default-applications.nix - ./development - ./fastfetch.nix - ./fish.nix - ./freetube.nix - ./gtk.nix - ./gpg.nix - ./kitty.nix - ./media - ./nextcloud.nix - ./rofi - ./hyprland - ./spicetify.nix - ./yazi - ./zen + (lib.custom.relativeToRoot "shared/home-manager") ]; - - home = { - username = username; - homeDirectory = dir.home; - - sessionVariables = { - XDG_PICTURES_DIR = dir.pictures; # Define the default dir for pictures - }; - - # You can update Home Manager without changing this value. See - # the Home Manager release notes for a list of state version - # changes in each release. - stateVersion = common.system.version; - }; - - # Adds pkgs.unstable in order to fetch packages from unstable repositories - nixpkgs.overlays = [ outputs.overlays.unstable-packages ]; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; } diff --git a/hosts/thinkpad/home-manager/btop.nix b/hosts/thinkpad/home-manager/btop.nix deleted file mode 100644 index 3d146b5..0000000 --- a/hosts/thinkpad/home-manager/btop.nix +++ /dev/null @@ -1,9 +0,0 @@ -let - theme = import ../theme.nix; -in -{ - catppuccin.btop = { - enable = true; - flavor = theme.flavor; - }; -} diff --git a/hosts/thinkpad/home-manager/cava/cava.png b/hosts/thinkpad/home-manager/cava/cava.png deleted file mode 100644 index 60cbec3da435604e346b6879c21566afb33e672d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2176 zcmV-`2!HodNk&F^2mkw)fe#ZQHhO z+qP|-c(!f7Z`=OQHWrd2Ns6Q>`DrO)sD0@JV^1rrv8NSg$(_f3{nf56)>A&DgWZ47 zC&@oftw~yl)8m&C8|&4q9dA2pS@%c_y(tRhz%L|msz~fQNiaLH3-%l^a=;0`FojnKs!71)uEQ~z~BJNNn4+G+K&5?&BCc5y)i_e-B=#y!RSHIs{aTdIocq_WVT^yLQ<*iB(b6 znW&I4!96FYJo19Re34AzVsTR^`mb|OYxeebCMbdWi* z>myh_a@zv>O-5c?jJWuZ*WMSI)2ng4@Xsa=R{bQ zpG5lopfhm|u$M!_hrd9ok8B^w0^S1hmjhj2eYzeKkvT71{rj2GWlK?j71k!H=B7i6G zog_OxwaD(JYpP)`>PN6SCy;(4@Usa-v%J>`7;AW^8qO(>U~^6Y{m9VIE+1cb8Xsf0 zcdB8P<_I?D1k!JW_4B|9&y4lL9=bK&PuA^PQm^c!LQ1T+DfW*L~6eoW0T*g3gy zbCe+cMp!=|)(DM&D25VlPCm>WHAue^)^9m%5E>6+5Nen?O6WO6kbWb&9}yZgh<6g9 z=cpm)PyzZyf1GZfmqYfWLP7-aPAVis`sAHa>ugn@r#=v>9~lZNymykJpaOa)KroF1Glk=c= z0!+6$=N7ErR|wOGH2C#@$UD!2-U%>$80+^HKpHc=lP3+eisp@ zTODgLGrSXE+9MIH-*VU>yf<%#cLKaO!1}#|(9E0RodC@M>-P>qGjE1>0yG1x-#Y+l z%WMB>qi7IuX!W9 zGp@cL#L31_zr!UnXJD6iUQw*O^lV+IMP|;xF7K3KD~(jaPQ=Obp7x)fGqAxsnG6F3 zthaA1tMnWjypv8w-BH}F8fvepIW~AFlZ?9V?A0rQdo|X1XArfOW9T+aSyN)4cXlGS z@;Dj(F7I@ji-q3ViMEx;xoyi9vN<+-=SvDMl=GE6el?Ai-uaS(bM0;Gjh){4mWp$0 zhCR2_J0EvMWaFK{t(D#>!xj~{dB(Dh-pM40+VQ*M$Ug66GOV|)ElbvUXBLvW6LGbo zuYI%3JDKFJKfAWuL%X~)ADVi&Zpk9ySCx>%8HY^$Iod>_akODyOWO1R~t{L#b5bs0?1x|t9$>LnF>zN_m ziQuL{@8ofA%e-teyb~aeo_CUwf|%i*2(D8`pyi!(0wrRGcOnco9N$xc-U%>lYiTjV zI}z&j$JbP#cLLPyGPjuFoe1?$pmze)ADiKw0BJz)DbPCshNsN%P6RgvdMAK8WrlYmxGB&(0o*C9p9eF@I|T%^yb~Y| z=$$-iuzmvakar4@Yk4P67SKCcvS9sM06uO2eEePjRHmO=Gar^*`r@5TnCp+g93XxI z6(CAD^67_nGT|4>3b&;3g)cn`^5G-=W4Gb?g#`f1Y$FI?<9lF(f3X& z0P4i0{cobJ&biL-h`%`mJ_+OrFd~mlre+wzkvVSjA^g61=P3-e%fB92R)TdIm=*(v zePMu35FC&>fgF{^dZ$(wEJ3s8N9KgGSoY65O`v=%Q2PkX2_l2Wo>rLs^G+l9byw-! z_&JaJM@Qh-{&}Yn{JQXb6Q`p#%gqT?_dEAH%U^%(pLZI;uaCVM%2S4RnPSuG{qs&! z{`2C~Ff>cKr{3BwofTd^i28?kXFC?e46@S+B2ucPe3NpQ{X{tot5O-d`gEUEqq>w= zh<66c93xOqcnf340n%5)ZA6;YLm5Q8Q;JtXU*}jQb$__7n z&)N2WCo=f3$Z!_!4wLJ&-3TB&3YVsOvmo z*bhT_DAe}Ao%QEe6g%`sryZSZyYxQoGWf_Qt;0fAoWU%Mq{OhRi}jS&Q(8~?fIlS_ CgfUbA diff --git a/hosts/thinkpad/home-manager/cava/default.nix b/hosts/thinkpad/home-manager/cava/default.nix deleted file mode 100644 index 661c02b..0000000 --- a/hosts/thinkpad/home-manager/cava/default.nix +++ /dev/null @@ -1,29 +0,0 @@ -## Audio visualizer -{ pkgs, ... }: - -let - theme = import ../../theme.nix; -in -{ - catppuccin.cava = { - enable = true; - flavor = theme.flavor; - }; - - programs.cava = { - enable = true; - package = pkgs.cava; - }; - - xdg.desktopEntries.cava = { - name = "Cava"; - genericName = "Audio visualizer"; - terminal = true; - exec = "${pkgs.cava}/bin/cava"; - icon = ./cava.png; - categories = [ - "Audio" - "AudioVideo" - ]; - }; -} diff --git a/hosts/thinkpad/home-manager/cursors.nix b/hosts/thinkpad/home-manager/cursors.nix deleted file mode 100644 index d0ad7b9..0000000 --- a/hosts/thinkpad/home-manager/cursors.nix +++ /dev/null @@ -1,16 +0,0 @@ -let - theme = import ../theme.nix; -in -{ - catppuccin.cursors = { - enable = true; - flavor = theme.flavor; - accent = "dark"; - }; - - home.pointerCursor = { - gtk.enable = true; - x11.enable = true; - size = 16; - }; -} diff --git a/hosts/thinkpad/home-manager/default-applications.nix b/hosts/thinkpad/home-manager/default-applications.nix deleted file mode 100644 index d3f3e7f..0000000 --- a/hosts/thinkpad/home-manager/default-applications.nix +++ /dev/null @@ -1,24 +0,0 @@ -# TODO more defaults -{ - xdg.mimeApps = { - enable = true; - defaultApplications = - let - browser = "zen.desktop"; - imageViewer = "org.gnome.Loupe.desktop"; - pdfReader = "org.gnome.Papers.desktop"; - in - { - "text/html" = browser; - "x-scheme-handler/http" = browser; - "x-scheme-handler/https" = browser; - "x-scheme-handler/about" = browser; - "x-scheme-handler/unknown" = browser; - "image/jpg" = imageViewer; - "image/jpeg" = imageViewer; - "image/png" = imageViewer; - "image/gif" = imageViewer; - "application/pdf" = pdfReader; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/default.nix b/hosts/thinkpad/home-manager/default.nix index c32b866..d5b2ba3 100644 --- a/hosts/thinkpad/home-manager/default.nix +++ b/hosts/thinkpad/home-manager/default.nix @@ -1,67 +1,14 @@ { - pkgs, - inputs, + lib, ... }: -let - common = import ../common.nix; - username = common.username; - dir = common.dir; -in + { imports = [ - inputs.catppuccin.homeManagerModules.catppuccin - ./btop.nix - ./cava - ./cursors.nix - ./default-applications.nix - ./development - ./fastfetch.nix - ./fish.nix - ./freetube.nix - ./gtk.nix - ./kitty.nix - ./mpv.nix - ./nextcloud.nix + (lib.custom.relativeToRoot "shared/home-manager") ./hyprland - ./spicetify.nix - ./yazi ./zen ]; - dconf = { - enable = true; - settings = { - # Prefer dark mode for all GTK apps - "org/gnome/desktop/interface".color-scheme = "prefer-dark"; - }; - }; - - home = { - username = username; - homeDirectory = dir.home; - - sessionVariables = { - XDG_PICTURES_DIR = dir.pictures; # Define the default dir for pictures - }; - - # You can update Home Manager without changing this value. See - # the Home Manager release notes for a list of state version - # changes in each release. - stateVersion = common.system.version; - }; - - programs = { - btop.enable = true; - - # Let Home Manager install and manage itself. - home-manager.enable = true; - }; - - services = { - gpg-agent = { - enable = true; - pinentryPackage = pkgs.pinentry-curses; - }; - }; + programs.git.signing.key = "848D71DE0590C199"; } diff --git a/hosts/thinkpad/home-manager/development/default.nix b/hosts/thinkpad/home-manager/development/default.nix deleted file mode 100644 index ed66da1..0000000 --- a/hosts/thinkpad/home-manager/development/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - imports = [ - ./git.nix - ./nixvim - ./zed.nix - ]; - # TODO set Wayland vmOptions in Jetbrains products, Requires current installed version in path - # -Dawt.toolkit.name=WLToolKit -} diff --git a/hosts/thinkpad/home-manager/development/git.nix b/hosts/thinkpad/home-manager/development/git.nix deleted file mode 100644 index 11b4a4d..0000000 --- a/hosts/thinkpad/home-manager/development/git.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ git-crypt ]; - - programs.git = - let - package = pkgs.git.override { withLibsecret = true; }; - in - { - enable = true; - package = package; - userName = "Martin Berg Alstad"; - userEmail = "git@martials.no"; - - aliases = { - amend = "commit --amend"; - cm = "commit"; - s = "status"; - }; - - signing = { - signByDefault = true; - key = "848D71DE0590C199"; - }; - - extraConfig = { - push.autoSetupRemote = true; - safe.directory = "/etc/nixos"; - credential.helper = "${package}/bin/git-credential-libsecret"; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/development/nixvim/default.nix b/hosts/thinkpad/home-manager/development/nixvim/default.nix deleted file mode 100644 index 1bccf09..0000000 --- a/hosts/thinkpad/home-manager/development/nixvim/default.nix +++ /dev/null @@ -1,77 +0,0 @@ -# Neovim configuration for Nix -{ inputs, ... }: - -{ - imports = [ - inputs.nixvim.homeManagerModules.nixvim - ]; - - catppuccin.nvim.enable = true; - - home.sessionVariables.EDITOR = "nvim"; - - programs.nixvim = { - enable = true; - clipboard.providers.wl-copy.enable = true; - colorschemes.catppuccin.enable = true; - defaultEditor = true; - vimdiffAlias = true; # Alias vimdiff to nvim -d - - opts = { - number = true; # Show line numbers - relativenumber = true; # Show relative line numbers - - shiftwidth = 2; # Tab width should be 2 - }; - - plugins = { - bufferline.enable = false; - - # Formatters - conform-nvim = { - enable = true; - # TODO use nix fmt on save - settings = { }; - }; - - lsp = { - enable = true; - servers = { - nixd.enable = true; - }; - }; - - lualine.enable = true; - luasnip.enable = true; - - # Completions - cmp = { - enable = true; - - autoEnableSources = true; - - # TODO complete on - settings = { - sources = [ - { name = "nvim-lsp"; } - { name = "path"; } - { name = "buffer"; } - ]; - }; - }; - - treesitter.enable = true; - web-devicons.enable = true; - }; - - extraConfigLua = '' - -- Translucent background - vim.cmd [[ - highlight Normal guibg=none - highlight NonText guibg=none - highlight Normal ctermbg=none - highlight NonText ctermbg=none - ]] - ''; - }; -} diff --git a/hosts/thinkpad/home-manager/development/zed.nix b/hosts/thinkpad/home-manager/development/zed.nix deleted file mode 100644 index 12c45b8..0000000 --- a/hosts/thinkpad/home-manager/development/zed.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ pkgs, ... }: - -{ - programs.zed-editor = { - enable = true; - package = pkgs.unstable.zed-editor; - extensions = [ - "html" - "catppuccin" - "catppuccin-icons" - "toml" - "nix" - "git-firefly" - "just" - ]; - userSettings = - let - theme = import ../../theme.nix; - font = "${theme.nerdFont} Nerd Font"; - fontSize = 14; - in - { - assistant = { - default_model = { - provider = "ollama"; - model = "deepseek-r1:8b"; - }; - version = "2"; - }; - autosave = "on_focus_change"; - base_keymap = "JetBrains"; - buffer_font_family = font; - features = { - edit_completion_provider = "zed"; - }; - icon_theme = "Catppuccin Mocha"; - # icon_theme = { TODO replace icon theme above with below - # mode = theme.mode; - # light = "Catppuccin Mocha"; - # dark = "Catppuccin Mocha"; - # }; - ui_font_family = font; - ui_font_size = fontSize; - buffer_font_size = fontSize; - tabs = { - file_icons = true; - git_status = true; - }; - theme = { - mode = theme.mode; - light = "Catppuccin Latte"; - dark = "Catppuccin Mocha"; - }; - lsp.nil.initialization_options.formatting.command = [ "nixfmt" ]; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/fastfetch.nix b/hosts/thinkpad/home-manager/fastfetch.nix deleted file mode 100644 index 3da66cf..0000000 --- a/hosts/thinkpad/home-manager/fastfetch.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - programs = { - fish.shellAliases.fetch = "fastfetch"; - fastfetch = { - enable = true; - settings = { - logo = { - source = "${../Catppuccin.png}"; - type = "kitty"; - height = 18; - padding.top = 2; - }; - display.separator = " "; - modules = - let - keyColor = "34"; - module = type: key: { - inherit type key keyColor; - }; - formatModule = type: key: format: { - inherit - type - key - format - keyColor - ; - }; - in - [ - "break" - "break" - { - type = "title"; - keyWidth = 10; - } - "break" - (module "os" " ") - (module "kernel" " ") - (formatModule "packages" " " "{} (nixpkgs)") - (module "shell" " ") - (module "terminal" " ") - (module "wm" " ") - (module "theme" " ") - (module "cursor" " ") - (module "terminalfont" " ") - (module "uptime" " ") - (formatModule "datetime" " " "{1}-{3}-{11}") - (module "cpu" " ") - (module "gpu" "󰤽 ") - (module "sound" " ") - (module "lm" " ") - "break" - "colors" - "break" - "break" - ]; - }; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/fish.nix b/hosts/thinkpad/home-manager/fish.nix deleted file mode 100644 index 7611f35..0000000 --- a/hosts/thinkpad/home-manager/fish.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ pkgs, ... }: -let - theme = import ../theme.nix; -in -{ - catppuccin = { - fish = { - enable = true; - flavor = theme.flavor; - }; - starship = { - enable = true; - flavor = theme.flavor; - }; - }; - - programs = { - fish = { - enable = true; - # Start starship when creating a new shell - interactiveShellInit = '' - starship init fish | source - ${pkgs.fortune}/bin/fortune | ${pkgs.cowsay}/bin/cowsay -f tux - ''; - plugins = [ - { - # !! to get the previous command - # https://github.com/BrewingWeasel/fishbang - name = "fishbang"; - src = pkgs.fetchFromGitHub { - owner = "BrewingWeasel"; - repo = "fishbang"; - rev = "50389667eb9ac79edcff9b987c83e1de8ac93921"; - hash = "sha256-IneNWyfo29C7FDA5b6pTZRX3HpP6y/dRM6GXuLq2+zc="; - }; - } - ]; - shellAliases = { - nix-shell = "nix-shell --run fish"; # Start nix-shells using fishcd - }; - }; - - starship = { - enable = true; - settings = { - directory.substitutions = { - "Documents" = "󰈙 "; - "Downloads" = " "; - "Music" = "󰓃 "; - "Pictures" = " "; - "Git" = " "; - "nextcloud" = " "; - }; - }; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/freetube.nix b/hosts/thinkpad/home-manager/freetube.nix deleted file mode 100644 index aad9f56..0000000 --- a/hosts/thinkpad/home-manager/freetube.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ pkgs, ... }: - -{ - catppuccin.freetube.enable = true; - - programs.freetube = { - enable = true; - package = pkgs.unstable.freetube; - settings = { - allowDashAv1Formats = true; - checkForUpdates = false; - currentLocale = "en-GB"; - defaultTheatreMode = true; - defaultQuality = "1080"; - displayVideoPlayButton = false; - region = "NO"; - useSponsorBlock = true; - - sponsorBlockSponsor = { - color = "CatppuccinMochaGreen"; - skip = "autoSkip"; - }; - sponsorBlockSelfPromo = { - color = "CatppuccinMochaYellow"; - skip = "showInSeekBar"; - }; - sponsorBlockInteraction = { - color = "CatppuccinMochaPink"; - skip = "showInSeekBar"; - }; - sponsorBlockIntro = { - color = "CatppuccinMochaSapphire"; - skip = "doNothing"; - }; - sponsorBlockOutro = { - color = "CatppuccinMochaBlue"; - skip = "doNothing"; - }; - sponsorBlockRecap = { - color = "CatppuccinMochaMauve"; - skip = "doNothing"; - }; - sponsorBlockMusicOffTopic = { - color = "CatppuccinMochaFlamingo"; - skip = "doNothing"; - }; - sponsorBlockFiller = { - color = "CatppuccinMochaMauve"; - skip = "doNothing"; - }; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/gtk.nix b/hosts/thinkpad/home-manager/gtk.nix deleted file mode 100644 index 4a766d8..0000000 --- a/hosts/thinkpad/home-manager/gtk.nix +++ /dev/null @@ -1,11 +0,0 @@ -let - theme = import ../theme.nix; -in -{ - gtk.enable = true; - catppuccin.gtk = { - enable = true; - flavor = theme.flavor; - icon.enable = true; - }; -} diff --git a/hosts/thinkpad/home-manager/hyprland/binds.nix b/hosts/thinkpad/home-manager/hyprland/binds.nix deleted file mode 100644 index d9e3b82..0000000 --- a/hosts/thinkpad/home-manager/hyprland/binds.nix +++ /dev/null @@ -1,103 +0,0 @@ -let - common = import ../../common.nix; - app = common.default; -in -{ - # TODO binds to move focused window - wayland.windowManager.hyprland.settings = { - "$mainMod" = "SUPER"; - "$shiftMod" = "$mainMod SHIFT"; - "$ctrlMod" = "$mainMod CTRL"; - "$menu" = "rofi -show drun"; - - bind = [ - "$mainMod, Q, exec, ${app.terminal}" - "$mainMod, C, killactive," - "$shiftMod, M, exit," - "$mainMod, E, exec, ${app.fileManager}" - "$mainMod, V, togglefloating," - "$mainMod, R, exec, $menu" - "$mainMod, P, pseudo," # dwindle - "$mainMod, J, togglesplit," # dwindle - "$mainMod, B, exec, ${app.browser}" - "$mainMod, L, exec, ${app.lockScreen}" - "$mainMod, K, exec, [float] ${app.calculator}" - "$mainMod, ESCAPE, exec, hyprpanel t dashboardmenu" - - # Move focus with mainMod + arrow keys - "$mainMod, left, movefocus, l" - "$mainMod, right, movefocus, r" - "$mainMod, up, movefocus, u" - "$mainMod, down, movefocus, d" - - # Move window with ctrl + mainMod + arrow keys - "$ctrlMod, left, movewindow, l" - "$ctrlMod, right, movewindow, r" - "$ctrlMod, up, movewindow, u" - "$ctrlMod, down, movewindow, d" - - # Switch workspaces with mainMod + [0-9] - "$mainMod, 1, workspace, 1" - "$mainMod, 2, workspace, 2" - "$mainMod, 3, workspace, 3" - "$mainMod, 4, workspace, 4" - "$mainMod, 5, workspace, 5" - "$mainMod, 6, workspace, 6" - "$mainMod, 7, workspace, 7" - "$mainMod, 8, workspace, 8" - "$mainMod, 9, workspace, 9" - "$mainMod, 0, workspace, 10" - - # Move active window to a workspace with mainMod + SHIFT + [0-9] - "$shiftMod, 1, movetoworkspace, 1" - "$shiftMod, 2, movetoworkspace, 2" - "$shiftMod, 3, movetoworkspace, 3" - "$shiftMod, 4, movetoworkspace, 4" - "$shiftMod, 5, movetoworkspace, 5" - "$shiftMod, 6, movetoworkspace, 6" - "$shiftMod, 7, movetoworkspace, 7" - "$shiftMod, 8, movetoworkspace, 8" - "$shiftMod, 9, movetoworkspace, 9" - "$shiftMod, 0, movetoworkspace, 10" - - # Example special workspace (scratchpad) - "$mainMod, S, togglespecialworkspace, magic" - "$shiftMod, S, movetoworkspace, special:magic" - - # Scroll through existing workspaces with mainMod + scroll - "$mainMod, mouse_down, workspace, e+1" - "$mainMod, mouse_up, workspace, e-1" - ]; - - binde = [ - # Resize the focused window - "$shiftMod, right, resizeactive, 20 0" - "$shiftMod, left, resizeactive, -20 0" - "$shiftMod, up, resizeactive, 0 -20" - "$shiftMod, down, resizeactive, 0 20" - ]; - - bindm = [ - # Move/resize windows with mainMod + LMB/RMB and dragging - "$mainMod, mouse:272, movewindow" - "$mainMod, mouse:273, resizewindow" - ]; - - bindl = [ - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPause, exec, playerctl play-pause" - ", XF86AudioPlay, exec, playerctl play-pause" - ", XF86AudioPrev, exec, playerctl previous" - ]; - - bindel = [ - # Laptop multimedia keys for volume and LCD brightness - ",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" - ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" - ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" - ",XF86MonBrightnessUp, exec, brightnessctl s 10%+" - ",XF86MonBrightnessDown, exec, brightnessctl s 10%-" - ]; - }; -} diff --git a/hosts/thinkpad/home-manager/hyprland/default.nix b/hosts/thinkpad/home-manager/hyprland/default.nix index def2943..9cbe761 100644 --- a/hosts/thinkpad/home-manager/hyprland/default.nix +++ b/hosts/thinkpad/home-manager/hyprland/default.nix @@ -1,22 +1,8 @@ # Home configurations for Hyprland. For system configs, see ./modules/hyprland -{ outputs, ... }: - { imports = [ - ./binds.nix - ./hypridle - ./hyprlock - ./hyprpanel + ./hyprpanel.nix ./hyprpaper.nix - ./hyprshot.nix ./settings.nix ]; - - # Adds pkgs.unstable in order to fetch packages from unstable repositories - nixpkgs.overlays = [ outputs.overlays.unstable-packages ]; - - wayland.windowManager.hyprland = { - enable = true; - systemd.variables = [ "--all" ]; # Import environment into systemd - }; } diff --git a/hosts/thinkpad/home-manager/hyprland/hypridle/default.nix b/hosts/thinkpad/home-manager/hyprland/hypridle/default.nix deleted file mode 100644 index 69768c3..0000000 --- a/hosts/thinkpad/home-manager/hyprland/hypridle/default.nix +++ /dev/null @@ -1,38 +0,0 @@ -let - # Time in seconds - lockAfter = 1200; - screenOffAfter = 1500; - suspendAfter = 7200; -in -{ - services.hypridle = { - enable = true; - settings = { - general = { - before_sleep_cmd = "loginctl lock-session"; - after_sleep_cmd = "hyprctl dispatch dpms on"; - lock_cmd = "pidof hyprlock || hyprlock"; # Avoid running multiple instances of hyprlock - }; - - listener = [ - # Lock - { - timeout = lockAfter; - on-timeout = "loginctl lock-session"; - } - # Turn off screens - { - timeout = screenOffAfter; - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - # Suspend - { - timeout = suspendAfter; - on-timeout = "systemctl suspend"; # suspend pc - } - ]; - }; - }; - wayland.windowManager.hyprland.settings.exec-once = [ "hypridle" ]; -} diff --git a/hosts/thinkpad/home-manager/hyprland/hyprlock/default.nix b/hosts/thinkpad/home-manager/hyprland/hyprlock/default.nix deleted file mode 100644 index 2ff5a52..0000000 --- a/hosts/thinkpad/home-manager/hyprland/hyprlock/default.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ lib, ... }: -let - theme = import ../../../theme.nix; -in -{ - programs.hyprlock = { - enable = true; - settings = { - "$font" = "${theme.nerdFont} Nerd Font"; - - background = [ - { - path = "${../../../wallpapers/catppuccin_page_curl.png}"; - } - ]; - - # GENERAL - general = { - disable_loading_bar = true; - hide_cursor = true; - }; - - # LAYOUT - label = [ - { - text = "$LAYOUT"; - color = "${theme.textRgb}"; - font_size = 25; - font_family = "$font"; - position = "30, -30"; - halign = "left"; - valign = "top"; - } - # TIME - { - text = "$TIME"; - color = "${theme.textRgb}"; - font_size = 90; - font_family = "$font"; - position = "-30, 0"; - halign = "right"; - valign = "top"; - } - # DATE - { - text = "cmd[update:43200000] date +\"%A, %d %B %Y\""; - color = "${theme.textRgb}"; - font_size = 25; - font_family = "$font"; - position = "-30, -150"; - halign = "right"; - valign = "top"; - } - ]; - - # USER AVATAR - image = { - path = "${../../face.png}"; - size = 100; - border_color = "${theme.blueRgb}"; - position = "0, 75"; - halign = "center"; - valign = "center"; - }; - - # INPUT FIELD - input-field = { - size = "300, 60"; - outline_thickness = 4; - dots_size = 0.2; - dots_spacing = 0.2; - dots_center = true; - outer_color = lib.mkDefault "${theme.blueRgb}"; - inner_color = lib.mkDefault "${theme.surface0Rgb}"; - font_color = lib.mkDefault "${theme.textRgb}"; - fade_on_empty = false; - placeholder_text = "󰌾 Logged in as $USER"; - hide_input = false; - check_color = lib.mkDefault "${theme.blueRgb}"; - fail_color = lib.mkDefault "${theme.redRgb}"; - fail_text = "$FAIL ($ATTEMPTS)"; - capslock_color = lib.mkDefault "${theme.yellowRgb}"; - position = "0, -47"; # TODO change to use % at 25.05 - halign = "center"; - valign = "center"; - }; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/hyprland/hyprpanel.nix b/hosts/thinkpad/home-manager/hyprland/hyprpanel.nix new file mode 100644 index 0000000..dd6d3c0 --- /dev/null +++ b/hosts/thinkpad/home-manager/hyprland/hyprpanel.nix @@ -0,0 +1,16 @@ +{ + lib, + ... +}: + +{ + programs.hyprpanel.layout."bar.layouts"."*".right = lib.mkDefault [ + "kbinput" + "volume" + "network" + "systray" + "clock" + "battery" + "notifications" + ]; +} diff --git a/hosts/thinkpad/home-manager/hyprland/hyprpanel/default.nix b/hosts/thinkpad/home-manager/hyprland/hyprpanel/default.nix deleted file mode 100644 index 4b20d4a..0000000 --- a/hosts/thinkpad/home-manager/hyprland/hyprpanel/default.nix +++ /dev/null @@ -1,123 +0,0 @@ -{ - pkgs, - inputs, - lib, - ... -}: -let - common = import ../../../common.nix; - theme = import ../../../theme.nix; - loader = import ../../secretsLoader.nix lib; -in -{ - imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ]; - - programs.hyprpanel = { - enable = true; - # Add hyprpanel to the Hyprland config 'exec-once'. - hyprland.enable = true; - # Fix the overwrite issue with HyprPanel. - overwrite.enable = true; - - # Import a theme from './themes/*.json'. - theme = ""; - - # Override the final config with an arbitrary set. - # Useful for overriding colors in your selected theme. - # Default: {} - override = { - theme.bar.menus.text = "#123ABC"; - }; - - # Configure bar layouts for monitors. - layout = { - "bar.layouts" = { - "*" = { - left = [ - "dashboard" - "workspaces" - "windowtitle" - ]; - middle = [ "media" ]; - right = [ - "kbinput" - "volume" - "network" - "systray" - "clock" - "battery" - "notifications" - ]; - }; - }; - }; - - # Configure and theme almost all options from the GUI. - # Options that require '{}' or '[]' are not yet implemented, - # except for the layout above. - # See 'https://hyprpanel.com/configuration/settings.html'. - # Default: - settings = { - bar = { - clock.format = "%a %b %d %H:%M"; - customModules.kbLayout.leftClick = "hyprctl switchxkblayout keychron-keychron-k8-pro next"; - launcher.autoDetectIcon = true; - network.label = false; - volume = { - scrollDown = "${pkgs.hyprpanel}/bin/hyprpanel 'vol -1'"; - scrollUp = "${pkgs.hyprpanel}/bin/hyprpanel 'vol +1'"; - }; - workspaces = { - show_icons = false; - show_numbered = true; - }; - }; - - menus = { - clock = { - time = { - military = true; - hideSeconds = true; - }; - weather = { - unit = "metric"; - location = "Bergen, Norway"; - key = loader.loadSecret ../../secrets/weather-api-key; - }; - }; - - dashboard = { - directories.enabled = false; - powermenu.avatar.image = "${../../face.png}"; - shortcuts.left = { - shortcut1 = { - command = common.default.browser; - icon = ""; # TODO replace with Zen icon - tooltip = "Zen"; - }; - shortcut2 = { - command = "spotify"; - icon = ""; - tooltip = "Spotify"; - }; - ## shortcut3 === discord - ## shortcut4 === rofi -show drun - }; - stats.enable_gpu = true; - }; - }; - - scalingPriority = "hyprland"; - - theme = { - bar.transparent = true; - font = { - name = "${theme.nerdFont} NF"; - size = "16px"; - }; - }; - - wallpaper.enable = false; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix b/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix index bcb8c54..267e8e4 100644 --- a/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix +++ b/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix @@ -1,33 +1,23 @@ # Wallpapers -{ pkgs, ... }: - -let - common = import ../../common.nix; -in { - home.packages = with pkgs; [ - hyprpaper - ]; + lib, + theme, + common, + ... +}: - services.hyprpaper = { - enable = true; - settings = - let - wallpaperDir = ../../wallpapers; - monitor1 = "${wallpaperDir}/nixos_waves.png"; - in - { - ipc = "on"; - splash = false; - splash_offset = 2.0; +{ + services.hyprpaper = + let + monitor1 = builtins.toString theme.wallpaper.monitor1; + in + { + preload = lib.mkDefault [ + monitor1 + ]; - preload = [ - monitor1 - ]; - - wallpaper = [ - "${common.monitor1},${monitor1}" - ]; - }; - }; + wallpaper = lib.mkDefault [ + "${common.monitor1},${monitor1}" + ]; + }; } diff --git a/hosts/thinkpad/home-manager/hyprland/hyprshot.nix b/hosts/thinkpad/home-manager/hyprland/hyprshot.nix deleted file mode 100644 index 67dbb6b..0000000 --- a/hosts/thinkpad/home-manager/hyprland/hyprshot.nix +++ /dev/null @@ -1,19 +0,0 @@ -let - common = import ../../common.nix; -in -{ - wayland.windowManager.hyprland.settings = { - "$mainMod" = "SUPER"; - "$shiftMod" = "$mainMod SHIFT"; - - env = [ - "HYPRSHOT_DIR,${common.dir.pictures}/screenshots" # Store screenshots here - ]; - - bind = [ - "$mainMod, PRINT, exec, hyprshot -m window" # Window - ", PRINT, exec, hyprshot -m output" # Monitor - "$shiftMod, PRINT, exec, hyprshot -m region" # Region - ]; - }; -} diff --git a/hosts/thinkpad/home-manager/hyprland/settings.nix b/hosts/thinkpad/home-manager/hyprland/settings.nix index 92c33f5..eba45d4 100644 --- a/hosts/thinkpad/home-manager/hyprland/settings.nix +++ b/hosts/thinkpad/home-manager/hyprland/settings.nix @@ -1,135 +1,30 @@ -{ lib, ... }: -let - common = import ../../common.nix; - theme = import ../../theme.nix; - app = common.default; -in +{ + lib, + common, + ... +}: + { wayland.windowManager.hyprland.settings = { - monitor = [ + monitor = lib.mkDefault [ "${common.monitor1}, 1920x1080@60.05, 0x0, 1" ]; # Autostart exec-once = [ - app.browser - app.terminal - "systemctl --user start hyprpolkitagent" "hyprsunset -t 5000" # Set blue light filter ]; - env = [ - "ELECTRON_OZONE_PLATFORM_HINT,auto" # Tell Electron apps to use Wayland - ]; - - general = { - gaps_in = 5; - gaps_out = 20; - border_size = 2; - "col.active_border" = lib.mkDefault "${theme.mauveRgb} ${theme.tealRgb} 45deg"; - "col.inactive_border" = lib.mkDefault "rgba(${theme.surface2Alpha}aa)"; - resize_on_border = true; - allow_tearing = false; - layout = "dwindle"; - }; - - decoration = { - rounding = 10; - - # Change transparency of focused and unfocused windows - active_opacity = 1.0; - inactive_opacity = 1.0; - - shadow = { - enabled = true; - range = 4; - render_power = 3; - color = lib.mkDefault theme.baseRgb; - }; - - blur = { - enabled = true; - size = 3; - passes = 1; - - vibrancy = 0.1696; - }; - }; - - animations = { - enabled = "yes, please :)"; - - bezier = [ - "easeOutQuint,0.23,1,0.32,1" - "easeInOutCubic,0.65,0.05,0.36,1" - "linear,0,0,1,1" - "almostLinear,0.5,0.5,0.75,1.0" - "quick,0.15,0,0.1,1" - ]; - - animation = [ - "global, 1, 10, default" - "border, 1, 5.39, easeOutQuint" - "windows, 1, 4.79, easeOutQuint" - "windowsIn, 1, 4.1, easeOutQuint, popin 87%" - "windowsOut, 1, 1.49, linear, popin 87%" - "fadeIn, 1, 1.73, almostLinear" - "fadeOut, 1, 1.46, almostLinear" - "fade, 1, 3.03, quick" - "layers, 1, 3.81, easeOutQuint" - "layersIn, 1, 4, easeOutQuint, fade" - "layersOut, 1, 1.5, linear, fade" - "fadeLayersIn, 1, 1.79, almostLinear" - "fadeLayersOut, 1, 1.39, almostLinear" - "workspaces, 1, 1.94, almostLinear, fade" - "workspacesIn, 1, 1.21, almostLinear, fade" - "workspacesOut, 1, 1.94, almostLinear, fade" - ]; - }; - - dwindle = { - pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - preserve_split = true; # You probably want this - }; - - master.new_status = "master"; - - misc = { - force_default_wallpaper = 0; - disable_hyprland_logo = true; - }; - - debug.disable_logs = false; - input = { - kb_layout = common.keymaps.layout; - kb_options = common.keymaps.options; - follow_mouse = 1; sensitivity = 0.4; # -1.0 - 1.0, 0 means no modification. touchpad.natural_scroll = true; }; - gestures = { + gestures = lib.mkDefault { workspace_swipe = true; workspace_swipe_distance = 150; workspace_swipe_min_speed_to_force = 0; workspace_swipe_cancel_ratio = 0.5; }; - - device = { - name = "logitech-g502-hero-gaming-mouse"; - sensitivity = -0.10; - }; - - windowrulev2 = [ - # Ignore maximize requests from apps - "suppressevent maximize, class:.*" - # Fix some dragging issues with XWayland - "nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0" - # Avoid locking in fullscreen - "idleinhibit fullscreen, class:^(*)$" - "idleinhibit fullscreen, title:^(*)$" - "idleinhibit fullscreen, fullscreen:1" - ]; }; } diff --git a/hosts/thinkpad/home-manager/kitty.nix b/hosts/thinkpad/home-manager/kitty.nix deleted file mode 100644 index 4316146..0000000 --- a/hosts/thinkpad/home-manager/kitty.nix +++ /dev/null @@ -1,25 +0,0 @@ -let - common = import ../common.nix; - theme = import ../theme.nix; -in -{ - catppuccin.kitty = { - enable = true; - flavor = theme.flavor; - }; - - programs = { - # Transfer shell config to target device - fish.shellAliases.ssh = "kitty +kitten ssh"; - kitty = { - enable = common.default.terminal == "kitty"; - font.name = theme.nerdFont; - settings = { - background_blur = 5; - background_opacity = 0.8; - confirm_os_window_close = 0; - window_padding_width = 10; - }; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/mpv.nix b/hosts/thinkpad/home-manager/mpv.nix deleted file mode 100644 index ef88358..0000000 --- a/hosts/thinkpad/home-manager/mpv.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - catppuccin.mpv = - let - theme = import ../theme.nix; - in - { - enable = true; - flavor = theme.flavor; - }; - - programs = { - fish.shellAliases.mpvl = "mpv --profile=loop"; - mpv = { - enable = true; - config = { - hwdec = "auto-safe"; - vo = "gpu"; - profile = "gpu-hq"; - gpu-context = "wayland"; - }; - profiles = { - loop = { - loop-playlist = "inf"; - loop-file = "inf"; - }; - }; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/nextcloud.nix b/hosts/thinkpad/home-manager/nextcloud.nix deleted file mode 100644 index 6d6bc7c..0000000 --- a/hosts/thinkpad/home-manager/nextcloud.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - services.nextcloud-client = { - enable = true; - startInBackground = true; - }; -} diff --git a/hosts/thinkpad/home-manager/spicetify.nix b/hosts/thinkpad/home-manager/spicetify.nix deleted file mode 100644 index 758b9dc..0000000 --- a/hosts/thinkpad/home-manager/spicetify.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ - pkgs, - inputs, - lib, - ... -}: - -{ - imports = [ inputs.spicetify-nix.homeManagerModules.default ]; - programs.spicetify = - let - spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; - theme = import ../theme.nix; - in - { - enable = true; - - enabledExtensions = with spicePkgs.extensions; [ - adblock - fullAppDisplay - hidePodcasts - shuffle # shuffle+ (special characters are sanitized out of extension names) - ]; - enabledCustomApps = with spicePkgs.apps; [ - newReleases - ncsVisualizer - ]; - enabledSnippets = with spicePkgs.snippets; [ - pointer - ]; - - theme = lib.mkForce spicePkgs.themes.catppuccin; - colorScheme = lib.mkForce theme.flavor; - }; -} diff --git a/hosts/thinkpad/home-manager/yazi/catppuccin-mocha.tmTheme b/hosts/thinkpad/home-manager/yazi/catppuccin-mocha.tmTheme deleted file mode 100644 index 6bd0f29..0000000 --- a/hosts/thinkpad/home-manager/yazi/catppuccin-mocha.tmTheme +++ /dev/null @@ -1,2081 +0,0 @@ - - - - - name - Catppuccin Mocha - semanticClass - theme.dark.catppuccin-mocha - uuid - 627ce890-fabb-4d39-9819-7be71f4bdca7 - author - Catppuccin Org - colorSpaceName - sRGB - settings - - - settings - - background - #1e1e2e - foreground - #cdd6f4 - caret - #f5e0dc - lineHighlight - #313244 - misspelling - #f38ba8 - accent - #cba6f7 - selection - #9399b240 - activeGuide - #45475a - findHighlight - #3e5767 - gutterForeground - #7f849c - - - - name - Basic text & variable names (incl. leading punctuation) - scope - text, source, variable.other.readwrite, punctuation.definition.variable - settings - - foreground - #cdd6f4 - - - - name - Parentheses, Brackets, Braces - scope - punctuation - settings - - foreground - #9399b2 - fontStyle - - - - - name - Comments - scope - comment, punctuation.definition.comment - settings - - foreground - #6c7086 - fontStyle - italic - - - - scope - string, punctuation.definition.string - settings - - foreground - #a6e3a1 - - - - scope - constant.character.escape - settings - - foreground - #f5c2e7 - - - - name - Booleans, constants, numbers - scope - constant.numeric, variable.other.constant, entity.name.constant, constant.language.boolean, constant.language.false, constant.language.true, keyword.other.unit.user-defined, keyword.other.unit.suffix.floating-point - settings - - foreground - #fab387 - - - - scope - keyword, keyword.operator.word, keyword.operator.new, variable.language.super, support.type.primitive, storage.type, storage.modifier, punctuation.definition.keyword - settings - - foreground - #cba6f7 - fontStyle - - - - - scope - entity.name.tag.documentation - settings - - foreground - #cba6f7 - - - - name - Punctuation - scope - keyword.operator, punctuation.accessor, punctuation.definition.generic, meta.function.closure punctuation.section.parameters, punctuation.definition.tag, punctuation.separator.key-value - settings - - foreground - #94e2d5 - - - - scope - entity.name.function, meta.function-call.method, support.function, support.function.misc, variable.function - settings - - foreground - #89b4fa - fontStyle - italic - - - - name - Classes - scope - entity.name.class, entity.other.inherited-class, support.class, meta.function-call.constructor, entity.name.struct - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Enum - scope - entity.name.enum - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Enum member - scope - meta.enum variable.other.readwrite, variable.other.enummember - settings - - foreground - #94e2d5 - - - - name - Object properties - scope - meta.property.object - settings - - foreground - #94e2d5 - - - - name - Types - scope - meta.type, meta.type-alias, support.type, entity.name.type - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Decorators - scope - meta.annotation variable.function, meta.annotation variable.annotation.function, meta.annotation punctuation.definition.annotation, meta.decorator, punctuation.decorator - settings - - foreground - #fab387 - - - - scope - variable.parameter, meta.function.parameters - settings - - foreground - #eba0ac - fontStyle - italic - - - - name - Built-ins - scope - constant.language, support.function.builtin - settings - - foreground - #f38ba8 - - - - scope - entity.other.attribute-name.documentation - settings - - foreground - #f38ba8 - - - - name - Preprocessor directives - scope - keyword.control.directive, punctuation.definition.directive - settings - - foreground - #f9e2af - - - - name - Type parameters - scope - punctuation.definition.typeparameters - settings - - foreground - #89dceb - - - - name - Namespaces - scope - entity.name.namespace - settings - - foreground - #f9e2af - - - - name - Property names (left hand assignments in json/yaml/css) - scope - support.type.property-name.css - settings - - foreground - #89b4fa - fontStyle - - - - - name - This/Self keyword - scope - variable.language.this, variable.language.this punctuation.definition.variable - settings - - foreground - #f38ba8 - - - - name - Object properties - scope - variable.object.property - settings - - foreground - #cdd6f4 - - - - name - String template interpolation - scope - string.template variable, string variable - settings - - foreground - #cdd6f4 - - - - name - `new` as bold - scope - keyword.operator.new - settings - - fontStyle - bold - - - - name - C++ extern keyword - scope - storage.modifier.specifier.extern.cpp - settings - - foreground - #cba6f7 - - - - name - C++ scope resolution - scope - entity.name.scope-resolution.template.call.cpp, entity.name.scope-resolution.parameter.cpp, entity.name.scope-resolution.cpp, entity.name.scope-resolution.function.definition.cpp - settings - - foreground - #f9e2af - - - - name - C++ doc keywords - scope - storage.type.class.doxygen - settings - - fontStyle - - - - - name - C++ operators - scope - storage.modifier.reference.cpp - settings - - foreground - #94e2d5 - - - - name - C# Interpolated Strings - scope - meta.interpolation.cs - settings - - foreground - #cdd6f4 - - - - name - C# xml-style docs - scope - comment.block.documentation.cs - settings - - foreground - #cdd6f4 - - - - name - Classes, reflecting the className color in JSX - scope - source.css entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css - settings - - foreground - #f9e2af - - - - name - Operators - scope - punctuation.separator.operator.css - settings - - foreground - #94e2d5 - - - - name - Pseudo classes - scope - source.css entity.other.attribute-name.pseudo-class - settings - - foreground - #94e2d5 - - - - scope - source.css constant.other.unicode-range - settings - - foreground - #fab387 - - - - scope - source.css variable.parameter.url - settings - - foreground - #a6e3a1 - fontStyle - - - - - name - CSS vendored property names - scope - support.type.vendored.property-name - settings - - foreground - #89dceb - - - - name - Less/SCSS right-hand variables (@/$-prefixed) - scope - source.css meta.property-value variable, source.css meta.property-value variable.other.less, source.css meta.property-value variable.other.less punctuation.definition.variable.less, meta.definition.variable.scss - settings - - foreground - #eba0ac - - - - name - CSS variables (--prefixed) - scope - source.css meta.property-list variable, meta.property-list variable.other.less, meta.property-list variable.other.less punctuation.definition.variable.less - settings - - foreground - #89b4fa - - - - name - CSS Percentage values, styled the same as numbers - scope - keyword.other.unit.percentage.css - settings - - foreground - #fab387 - - - - name - CSS Attribute selectors, styled the same as strings - scope - source.css meta.attribute-selector - settings - - foreground - #a6e3a1 - - - - name - JSON/YAML keys, other left-hand assignments - scope - keyword.other.definition.ini, punctuation.support.type.property-name.json, support.type.property-name.json, punctuation.support.type.property-name.toml, support.type.property-name.toml, entity.name.tag.yaml, punctuation.support.type.property-name.yaml, support.type.property-name.yaml - settings - - foreground - #89b4fa - fontStyle - - - - - name - JSON/YAML constants - scope - constant.language.json, constant.language.yaml - settings - - foreground - #fab387 - - - - name - YAML anchors - scope - entity.name.type.anchor.yaml, variable.other.alias.yaml - settings - - foreground - #f9e2af - fontStyle - - - - - name - TOML tables / ini groups - scope - support.type.property-name.table, entity.name.section.group-title.ini - settings - - foreground - #f9e2af - - - - name - TOML dates - scope - constant.other.time.datetime.offset.toml - settings - - foreground - #f5c2e7 - - - - name - YAML anchor puctuation - scope - punctuation.definition.anchor.yaml, punctuation.definition.alias.yaml - settings - - foreground - #f5c2e7 - - - - name - YAML triple dashes - scope - entity.other.document.begin.yaml - settings - - foreground - #f5c2e7 - - - - name - Markup Diff - scope - markup.changed.diff - settings - - foreground - #fab387 - - - - name - Diff - scope - meta.diff.header.from-file, meta.diff.header.to-file, punctuation.definition.from-file.diff, punctuation.definition.to-file.diff - settings - - foreground - #89b4fa - - - - name - Diff Inserted - scope - markup.inserted.diff - settings - - foreground - #a6e3a1 - - - - name - Diff Deleted - scope - markup.deleted.diff - settings - - foreground - #f38ba8 - - - - name - dotenv left-hand side assignments - scope - variable.other.env - settings - - foreground - #89b4fa - - - - name - dotenv reference to existing env variable - scope - string.quoted variable.other.env - settings - - foreground - #cdd6f4 - - - - name - GDScript functions - scope - support.function.builtin.gdscript - settings - - foreground - #89b4fa - - - - name - GDScript constants - scope - constant.language.gdscript - settings - - foreground - #fab387 - - - - name - Comment keywords - scope - comment meta.annotation.go - settings - - foreground - #eba0ac - - - - name - go:embed, go:build, etc. - scope - comment meta.annotation.parameters.go - settings - - foreground - #fab387 - - - - name - Go constants (nil, true, false) - scope - constant.language.go - settings - - foreground - #fab387 - - - - name - GraphQL variables - scope - variable.graphql - settings - - foreground - #cdd6f4 - - - - name - GraphQL aliases - scope - string.unquoted.alias.graphql - settings - - foreground - #f2cdcd - - - - name - GraphQL enum members - scope - constant.character.enum.graphql - settings - - foreground - #94e2d5 - - - - name - GraphQL field in types - scope - meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql - settings - - foreground - #f2cdcd - - - - name - HTML/XML DOCTYPE as keyword - scope - keyword.other.doctype, meta.tag.sgml.doctype punctuation.definition.tag, meta.tag.metadata.doctype entity.name.tag, meta.tag.metadata.doctype punctuation.definition.tag - settings - - foreground - #cba6f7 - - - - name - HTML/XML-like <tags/> - scope - entity.name.tag - settings - - foreground - #89b4fa - fontStyle - - - - - name - Special characters like &amp; - scope - text.html constant.character.entity, text.html constant.character.entity punctuation, constant.character.entity.xml, constant.character.entity.xml punctuation, constant.character.entity.js.jsx, constant.charactger.entity.js.jsx punctuation, constant.character.entity.tsx, constant.character.entity.tsx punctuation - settings - - foreground - #f38ba8 - - - - name - HTML/XML tag attribute values - scope - entity.other.attribute-name - settings - - foreground - #f9e2af - - - - name - Components - scope - support.class.component, support.class.component.jsx, support.class.component.tsx, support.class.component.vue - settings - - foreground - #f5c2e7 - fontStyle - - - - - name - Annotations - scope - punctuation.definition.annotation, storage.type.annotation - settings - - foreground - #fab387 - - - - name - Java enums - scope - constant.other.enum.java - settings - - foreground - #94e2d5 - - - - name - Java imports - scope - storage.modifier.import.java - settings - - foreground - #cdd6f4 - - - - name - Javadoc - scope - comment.block.javadoc.java keyword.other.documentation.javadoc.java - settings - - fontStyle - - - - - name - Exported Variable - scope - meta.export variable.other.readwrite.js - settings - - foreground - #eba0ac - - - - name - JS/TS constants & properties - scope - variable.other.constant.js, variable.other.constant.ts, variable.other.property.js, variable.other.property.ts - settings - - foreground - #cdd6f4 - - - - name - JSDoc; these are mainly params, so styled as such - scope - variable.other.jsdoc, comment.block.documentation variable.other - settings - - foreground - #eba0ac - fontStyle - - - - - name - JSDoc keywords - scope - storage.type.class.jsdoc - settings - - fontStyle - - - - - scope - support.type.object.console.js - settings - - foreground - #cdd6f4 - - - - name - Node constants as keywords (module, etc.) - scope - support.constant.node, support.type.object.module.js - settings - - foreground - #cba6f7 - - - - name - implements as keyword - scope - storage.modifier.implements - settings - - foreground - #cba6f7 - - - - name - Builtin types - scope - constant.language.null.js, constant.language.null.ts, constant.language.undefined.js, constant.language.undefined.ts, support.type.builtin.ts - settings - - foreground - #cba6f7 - - - - scope - variable.parameter.generic - settings - - foreground - #f9e2af - - - - name - Arrow functions - scope - keyword.declaration.function.arrow.js, storage.type.function.arrow.ts - settings - - foreground - #94e2d5 - - - - name - Decorator punctuations (decorators inherit from blue functions, instead of styleguide peach) - scope - punctuation.decorator.ts - settings - - foreground - #89b4fa - fontStyle - italic - - - - name - Extra JS/TS keywords - scope - keyword.operator.expression.in.js, keyword.operator.expression.in.ts, keyword.operator.expression.infer.ts, keyword.operator.expression.instanceof.js, keyword.operator.expression.instanceof.ts, keyword.operator.expression.is, keyword.operator.expression.keyof.ts, keyword.operator.expression.of.js, keyword.operator.expression.of.ts, keyword.operator.expression.typeof.ts - settings - - foreground - #cba6f7 - - - - name - Julia macros - scope - support.function.macro.julia - settings - - foreground - #94e2d5 - fontStyle - italic - - - - name - Julia language constants (true, false) - scope - constant.language.julia - settings - - foreground - #fab387 - - - - name - Julia other constants (these seem to be arguments inside arrays) - scope - constant.other.symbol.julia - settings - - foreground - #eba0ac - - - - name - LaTeX preamble - scope - text.tex keyword.control.preamble - settings - - foreground - #94e2d5 - - - - name - LaTeX be functions - scope - text.tex support.function.be - settings - - foreground - #89dceb - - - - name - LaTeX math - scope - constant.other.general.math.tex - settings - - foreground - #f2cdcd - - - - name - Lua docstring keywords - scope - comment.line.double-dash.documentation.lua storage.type.annotation.lua - settings - - foreground - #cba6f7 - fontStyle - - - - - name - Lua docstring variables - scope - comment.line.double-dash.documentation.lua entity.name.variable.lua, comment.line.double-dash.documentation.lua variable.lua - settings - - foreground - #cdd6f4 - - - - scope - heading.1.markdown punctuation.definition.heading.markdown, heading.1.markdown, markup.heading.atx.1.mdx, markup.heading.atx.1.mdx punctuation.definition.heading.mdx, markup.heading.setext.1.markdown, markup.heading.heading-0.asciidoc - settings - - foreground - #f38ba8 - - - - scope - heading.2.markdown punctuation.definition.heading.markdown, heading.2.markdown, markup.heading.atx.2.mdx, markup.heading.atx.2.mdx punctuation.definition.heading.mdx, markup.heading.setext.2.markdown, markup.heading.heading-1.asciidoc - settings - - foreground - #fab387 - - - - scope - heading.3.markdown punctuation.definition.heading.markdown, heading.3.markdown, markup.heading.atx.3.mdx, markup.heading.atx.3.mdx punctuation.definition.heading.mdx, markup.heading.heading-2.asciidoc - settings - - foreground - #f9e2af - - - - scope - heading.4.markdown punctuation.definition.heading.markdown, heading.4.markdown, markup.heading.atx.4.mdx, markup.heading.atx.4.mdx punctuation.definition.heading.mdx, markup.heading.heading-3.asciidoc - settings - - foreground - #a6e3a1 - - - - scope - heading.5.markdown punctuation.definition.heading.markdown, heading.5.markdown, markup.heading.atx.5.mdx, markup.heading.atx.5.mdx punctuation.definition.heading.mdx, markup.heading.heading-4.asciidoc - settings - - foreground - #89b4fa - - - - scope - heading.6.markdown punctuation.definition.heading.markdown, heading.6.markdown, markup.heading.atx.6.mdx, markup.heading.atx.6.mdx punctuation.definition.heading.mdx, markup.heading.heading-5.asciidoc - settings - - foreground - #cba6f7 - - - - scope - markup.bold - settings - - foreground - #f38ba8 - fontStyle - bold - - - - scope - markup.italic - settings - - foreground - #f38ba8 - fontStyle - italic - - - - scope - markup.strikethrough - settings - - foreground - #a6adc8 - fontStyle - strikethrough - - - - name - Markdown auto links - scope - punctuation.definition.link, markup.underline.link - settings - - foreground - #89b4fa - - - - name - Markdown links - scope - text.html.markdown punctuation.definition.link.title, string.other.link.title.markdown, markup.link, punctuation.definition.constant.markdown, constant.other.reference.link.markdown, markup.substitution.attribute-reference - settings - - foreground - #b4befe - - - - name - Markdown code spans - scope - punctuation.definition.raw.markdown, markup.inline.raw.string.markdown, markup.raw.block.markdown - settings - - foreground - #a6e3a1 - - - - name - Markdown triple backtick language identifier - scope - fenced_code.block.language - settings - - foreground - #89dceb - - - - name - Markdown triple backticks - scope - markup.fenced_code.block punctuation.definition, markup.raw support.asciidoc - settings - - foreground - #9399b2 - - - - name - Markdown quotes - scope - markup.quote, punctuation.definition.quote.begin - settings - - foreground - #f5c2e7 - - - - name - Markdown separators - scope - meta.separator.markdown - settings - - foreground - #94e2d5 - - - - name - Markdown list bullets - scope - punctuation.definition.list.begin.markdown, markup.list.bullet - settings - - foreground - #94e2d5 - - - - name - Nix attribute names - scope - entity.other.attribute-name.multipart.nix, entity.other.attribute-name.single.nix - settings - - foreground - #89b4fa - - - - name - Nix parameter names - scope - variable.parameter.name.nix - settings - - foreground - #cdd6f4 - fontStyle - - - - - name - Nix interpolated parameter names - scope - meta.embedded variable.parameter.name.nix - settings - - foreground - #b4befe - fontStyle - - - - - name - Nix paths - scope - string.unquoted.path.nix - settings - - foreground - #f5c2e7 - fontStyle - - - - - name - PHP Attributes - scope - support.attribute.builtin, meta.attribute.php - settings - - foreground - #f9e2af - - - - name - PHP Parameters (needed for the leading dollar sign) - scope - meta.function.parameters.php punctuation.definition.variable.php - settings - - foreground - #eba0ac - - - - name - PHP Constants (null, __FILE__, etc.) - scope - constant.language.php - settings - - foreground - #cba6f7 - - - - name - PHP functions - scope - text.html.php support.function - settings - - foreground - #89dceb - - - - name - PHPdoc keywords - scope - keyword.other.phpdoc.php - settings - - fontStyle - - - - - name - Python argument functions reset to text, otherwise they inherit blue from function-call - scope - support.variable.magic.python, meta.function-call.arguments.python - settings - - foreground - #cdd6f4 - - - - name - Python double underscore functions - scope - support.function.magic.python - settings - - foreground - #89dceb - fontStyle - italic - - - - name - Python `self` keyword - scope - variable.parameter.function.language.special.self.python, variable.language.special.self.python - settings - - foreground - #f38ba8 - fontStyle - italic - - - - name - python keyword flow/logical (for ... in) - scope - keyword.control.flow.python, keyword.operator.logical.python - settings - - foreground - #cba6f7 - - - - name - python storage type - scope - storage.type.function.python - settings - - foreground - #cba6f7 - - - - name - python function support - scope - support.token.decorator.python, meta.function.decorator.identifier.python - settings - - foreground - #89dceb - - - - name - python function calls - scope - meta.function-call.python - settings - - foreground - #89b4fa - - - - name - python function decorators - scope - entity.name.function.decorator.python, punctuation.definition.decorator.python - settings - - foreground - #fab387 - fontStyle - italic - - - - name - python placeholder reset to normal string - scope - constant.character.format.placeholder.other.python - settings - - foreground - #f5c2e7 - - - - name - Python exception & builtins such as exit() - scope - support.type.exception.python, support.function.builtin.python - settings - - foreground - #fab387 - - - - name - entity.name.type - scope - support.type.python - settings - - foreground - #fab387 - - - - name - python constants (True/False) - scope - constant.language.python - settings - - foreground - #cba6f7 - - - - name - Arguments accessed later in the function body - scope - meta.indexed-name.python, meta.item-access.python - settings - - foreground - #eba0ac - fontStyle - italic - - - - name - Python f-strings/binary/unicode storage types - scope - storage.type.string.python - settings - - foreground - #a6e3a1 - fontStyle - italic - - - - name - Python type hints - scope - meta.function.parameters.python - settings - - fontStyle - - - - - name - Regex string begin/end in JS/TS - scope - string.regexp punctuation.definition.string.begin, string.regexp punctuation.definition.string.end - settings - - foreground - #f5c2e7 - - - - name - Regex anchors (^, $) - scope - keyword.control.anchor.regexp - settings - - foreground - #cba6f7 - - - - name - Regex regular string match - scope - string.regexp.ts - settings - - foreground - #cdd6f4 - - - - name - Regex group parenthesis & backreference (\1, \2, \3, ...) - scope - punctuation.definition.group.regexp, keyword.other.back-reference.regexp - settings - - foreground - #a6e3a1 - - - - name - Regex character class [] - scope - punctuation.definition.character-class.regexp - settings - - foreground - #f9e2af - - - - name - Regex character classes (\d, \w, \s) - scope - constant.other.character-class.regexp - settings - - foreground - #f5c2e7 - - - - name - Regex range - scope - constant.other.character-class.range.regexp - settings - - foreground - #f5e0dc - - - - name - Regex quantifier - scope - keyword.operator.quantifier.regexp - settings - - foreground - #94e2d5 - - - - name - Regex constant/numeric - scope - constant.character.numeric.regexp - settings - - foreground - #fab387 - - - - name - Regex lookaheads, negative lookaheads, lookbehinds, negative lookbehinds - scope - punctuation.definition.group.no-capture.regexp, meta.assertion.look-ahead.regexp, meta.assertion.negative-look-ahead.regexp - settings - - foreground - #89b4fa - - - - name - Rust attribute - scope - meta.annotation.rust, meta.annotation.rust punctuation, meta.attribute.rust, punctuation.definition.attribute.rust - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Rust attribute strings - scope - meta.attribute.rust string.quoted.double.rust, meta.attribute.rust string.quoted.single.char.rust - settings - - fontStyle - - - - - name - Rust keyword - scope - entity.name.function.macro.rules.rust, storage.type.module.rust, storage.modifier.rust, storage.type.struct.rust, storage.type.enum.rust, storage.type.trait.rust, storage.type.union.rust, storage.type.impl.rust, storage.type.rust, storage.type.function.rust, storage.type.type.rust - settings - - foreground - #cba6f7 - fontStyle - - - - - name - Rust u/i32, u/i64, etc. - scope - entity.name.type.numeric.rust - settings - - foreground - #cba6f7 - fontStyle - - - - - name - Rust generic - scope - meta.generic.rust - settings - - foreground - #fab387 - - - - name - Rust impl - scope - entity.name.impl.rust - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Rust module - scope - entity.name.module.rust - settings - - foreground - #fab387 - - - - name - Rust trait - scope - entity.name.trait.rust - settings - - foreground - #f9e2af - fontStyle - italic - - - - name - Rust struct - scope - storage.type.source.rust - settings - - foreground - #f9e2af - - - - name - Rust union - scope - entity.name.union.rust - settings - - foreground - #f9e2af - - - - name - Rust enum member - scope - meta.enum.rust storage.type.source.rust - settings - - foreground - #94e2d5 - - - - name - Rust macro - scope - support.macro.rust, meta.macro.rust support.function.rust, entity.name.function.macro.rust - settings - - foreground - #89b4fa - fontStyle - italic - - - - name - Rust lifetime - scope - storage.modifier.lifetime.rust, entity.name.type.lifetime - settings - - foreground - #89b4fa - fontStyle - italic - - - - name - Rust string formatting - scope - string.quoted.double.rust constant.other.placeholder.rust - settings - - foreground - #f5c2e7 - - - - name - Rust return type generic - scope - meta.function.return-type.rust meta.generic.rust storage.type.rust - settings - - foreground - #cdd6f4 - - - - name - Rust functions - scope - meta.function.call.rust - settings - - foreground - #89b4fa - - - - name - Rust angle brackets - scope - punctuation.brackets.angle.rust - settings - - foreground - #89dceb - - - - name - Rust constants - scope - constant.other.caps.rust - settings - - foreground - #fab387 - - - - name - Rust function parameters - scope - meta.function.definition.rust variable.other.rust - settings - - foreground - #eba0ac - - - - name - Rust closure variables - scope - meta.function.call.rust variable.other.rust - settings - - foreground - #cdd6f4 - - - - name - Rust self - scope - variable.language.self.rust - settings - - foreground - #f38ba8 - - - - name - Rust metavariable names - scope - variable.other.metavariable.name.rust, meta.macro.metavariable.rust keyword.operator.macro.dollar.rust - settings - - foreground - #f5c2e7 - - - - name - Shell shebang - scope - comment.line.shebang, comment.line.shebang punctuation.definition.comment, comment.line.shebang, punctuation.definition.comment.shebang.shell, meta.shebang.shell - settings - - foreground - #f5c2e7 - fontStyle - italic - - - - name - Shell shebang command - scope - comment.line.shebang constant.language - settings - - foreground - #94e2d5 - fontStyle - italic - - - - name - Shell interpolated command - scope - meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation, meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation - settings - - foreground - #f38ba8 - - - - name - Shell interpolated command variable - scope - meta.string meta.interpolation.parameter.shell variable.other.readwrite - settings - - foreground - #fab387 - fontStyle - italic - - - - scope - source.shell punctuation.section.interpolation, punctuation.definition.evaluation.backticks.shell - settings - - foreground - #94e2d5 - - - - name - Shell EOF - scope - entity.name.tag.heredoc.shell - settings - - foreground - #cba6f7 - - - - name - Shell quoted variable - scope - string.quoted.double.shell variable.other.normal.shell - settings - - foreground - #cdd6f4 - - - - name - JSON Keys - scope - source.json meta.mapping.key string - settings - - foreground - #89b4fa - - - - name - JSON key surrounding quotes - scope - source.json meta.mapping.key punctuation.definition.string.begin, source.json meta.mapping.key punctuation.definition.string.end - settings - - foreground - #9399b2 - - - - scope - markup.heading.synopsis.man, markup.heading.title.man, markup.heading.other.man, markup.heading.env.man - settings - - foreground - #cba6f7 - - - - scope - markup.heading.commands.man - settings - - foreground - #89b4fa - - - - scope - markup.heading.env.man - settings - - foreground - #f5c2e7 - - - - name - Man page options - scope - entity.name - settings - - foreground - #94e2d5 - - - - scope - markup.heading.1.markdown - settings - - foreground - #f38ba8 - - - - scope - markup.heading.2.markdown - settings - - foreground - #fab387 - - - - scope - markup.heading.markdown - settings - - foreground - #f9e2af - - - - - \ No newline at end of file diff --git a/hosts/thinkpad/home-manager/yazi/default.nix b/hosts/thinkpad/home-manager/yazi/default.nix deleted file mode 100644 index 8376601..0000000 --- a/hosts/thinkpad/home-manager/yazi/default.nix +++ /dev/null @@ -1,327 +0,0 @@ -{ lib, ... }: -let - theme = import ../../theme.nix; - batTheme = ".config/yazi/catppuccin-${theme.flavor}.tmTheme"; -in -{ - home.file.${batTheme}.source = ./catppuccin-mocha.tmTheme; - - programs.yazi = { - enable = true; - settings = { - manager = { - ratio = [ - 2 - 4 - 2 - ]; - sort_by = "natural"; - sort_sensitive = true; - sort_reverse = false; - sort_dir_first = true; - linemode = "none"; - show_hidden = true; - show_symlink = true; - }; - - preview = { - image_filter = "lanczos3"; - image_quality = 90; - tab_size = 1; - max_width = 600; - max_height = 900; - cache_dir = ""; - ueberzug_scale = 1; - ueberzug_offset = [ - 0 - 0 - 0 - 0 - ]; - }; - - tasks = { - micro_workers = 5; - macro_workers = 10; - bizarre_retry = 5; - }; - }; - theme = lib.mkForce { - manager = { - cwd = { - fg = "#${theme.tealAlpha}"; - }; - - hovered = { - fg = "#${theme.baseAlpha}"; - bg = "#${theme.blueAlpha}"; - }; - preview_hovered = { - fg = "#${theme.baseAlpha}"; - bg = "#${theme.textAlpha}"; - }; - - find_keyword = { - fg = "#${theme.yellowAlpha}"; - italic = true; - }; - find_position = { - fg = "#${theme.pinkAlpha}"; - bg = "reset"; - italic = true; - }; - - marker_copied = { - fg = "#${theme.greenAlpha}"; - bg = "#${theme.greenAlpha}"; - }; - marker_cut = { - fg = "#${theme.redAlpha}"; - bg = "#${theme.redAlpha}"; - }; - marker_marked = { - fg = "#${theme.tealAlpha}"; - bg = "#${theme.tealAlpha}"; - }; - marker_selected = { - fg = "#${theme.blueAlpha}"; - bg = "#${theme.blueAlpha}"; - }; - - tab_active = { - fg = "#${theme.baseAlpha}"; - bg = "#${theme.textAlpha}"; - }; - tab_inactive = { - fg = "#${theme.textAlpha}"; - bg = "#${theme.surface1Alpha}"; - }; - tab_width = 1; - - count_copied = { - fg = "#${theme.baseAlpha}"; - bg = "#${theme.greenAlpha}"; - }; - count_cut = { - fg = "#${theme.baseAlpha}"; - bg = "#${theme.redAlpha}"; - }; - count_selected = { - fg = "#${theme.baseAlpha}"; - bg = "#${theme.blueAlpha}"; - }; - - border_symbol = "│"; - border_style.fg = "#${theme.overlay1Alpha}"; - - syntect_theme = "~/${batTheme}"; - }; - - mode = { - normal_main = { - fg = "#${theme.baseAlpha}"; - bg = "#${theme.blueAlpha}"; - bold = true; - }; - normal_alt = { - fg = "#${theme.blueAlpha}"; - bg = "#${theme.surface0Alpha}"; - }; - - select_main = { - fg = "#${theme.baseAlpha}"; - bg = "#${theme.greenAlpha}"; - bold = true; - }; - select_alt = { - fg = "#${theme.greenAlpha}"; - bg = "#${theme.surface0Alpha}"; - }; - - unset_main = { - fg = "#${theme.baseAlpha}"; - bg = "#${theme.flamingoAlpha}"; - bold = true; - }; - unset_alt = { - fg = "#${theme.flamingoAlpha}"; - bg = "#${theme.surface0Alpha}"; - }; - }; - - status = { - separator_open = ""; - separator_close = ""; - - progress_label = { - fg = "#ffffff"; - bold = true; - }; - progress_normal = { - fg = "#${theme.blueAlpha}"; - bg = "#${theme.surface1Alpha}"; - }; - progress_error = { - fg = "#${theme.redAlpha}"; - bg = "#${theme.surface1Alpha}"; - }; - - perm_type = { - fg = "#${theme.blueAlpha}"; - }; - perm_read = { - fg = "#${theme.yellowAlpha}"; - }; - perm_write = { - fg = "#${theme.redAlpha}"; - }; - perm_exec = { - fg = "#${theme.greenAlpha}"; - }; - perm_sep = { - fg = "#${theme.overlay1Alpha}"; - }; - }; - - input = { - border = { - fg = "#${theme.blueAlpha}"; - }; - title = { }; - value = { }; - selected.reversed = true; - }; - - pick = { - border = { - fg = "#${theme.blueAlpha}"; - }; - active = { - fg = "#${theme.pinkAlpha}"; - }; - inactive = { }; - }; - - confirm = { - border = { - fg = "#${theme.blueAlpha}"; - }; - title = { - fg = "#${theme.blueAlpha}"; - }; - content = { }; - list = { }; - btn_yes = { - reversed = true; - }; - btn_no = { }; - }; - - completion = { - border = { - fg = "#${theme.blueAlpha}"; - }; - }; - tasks = { - border = { - fg = "#${theme.blueAlpha}"; - }; - title = { }; - hovered = { - underline = true; - }; - }; - - which = { - mask = { - bg = "#${theme.surface0Alpha}"; - }; - cand = { - fg = "#${theme.tealAlpha}"; - }; - rest = { - fg = "#9399b2"; - }; - desc = { - fg = "#${theme.pinkAlpha}"; - }; - separator = "  "; - separator_style = { - fg = "#${theme.surface2Alpha}"; - }; - }; - help = { - on = { - fg = "#${theme.tealAlpha}"; - }; - run = { - fg = "#${theme.pinkAlpha}"; - }; - desc = { - fg = "#9399b2"; - }; - hovered = { - bg = "#${theme.surface2Alpha}"; - bold = true; - }; - footer = { - fg = "#${theme.textAlpha}"; - bg = "#${theme.surface1Alpha}"; - }; - }; - - notify = { - title_info = { - fg = "#${theme.tealAlpha}"; - }; - title_warn = { - fg = "#${theme.yellowAlpha}"; - }; - title_error = { - fg = "#${theme.redAlpha}"; - }; - }; - filetype = { - rules = [ - # Media - { - mime = "image/*"; - fg = "#${theme.tealAlpha}"; - } - { - mime = "{audio;video}/*"; - fg = "#${theme.yellowAlpha}"; - } - - # Archives - { - mime = "application/*zip"; - fg = "#${theme.pinkAlpha}"; - } - { - mime = "application/x-{tar;bzip*;7z-compressed;xz;rar}"; - fg = "#${theme.pinkAlpha}"; - } - - # Documents - { - mime = "application/{pdf;doc;rtf}"; - fg = "#${theme.greenAlpha}"; - } - - # Fallback - { - name = "*"; - fg = "#${theme.textAlpha}"; - } - { - name = "*/"; - fg = "#${theme.blueAlpha}"; - } - ]; - }; - - icon = import ./icons.nix; - }; - }; -} diff --git a/hosts/thinkpad/home-manager/yazi/icons.nix b/hosts/thinkpad/home-manager/yazi/icons.nix deleted file mode 100644 index 973cac2..0000000 --- a/hosts/thinkpad/home-manager/yazi/icons.nix +++ /dev/null @@ -1,3146 +0,0 @@ -{ - files = [ - { - name = "kritadisplayrc"; - text = ""; - fg = "#cba6f7"; - } - { - name = ".gtkrc-2.0"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "bspwmrc"; - text = ""; - fg = "#313244"; - } - { - name = "webpack"; - text = "󰜫"; - fg = "#74c7ec"; - } - { - name = "tsconfig.json"; - text = ""; - fg = "#74c7ec"; - } - { - name = ".vimrc"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "gemfile$"; - text = ""; - fg = "#313244"; - } - { - name = "xmobarrc"; - text = ""; - fg = "#f38ba8"; - } - { - name = "avif"; - text = ""; - fg = "#7f849c"; - } - { - name = "fp-info-cache"; - text = ""; - fg = "#f5e0dc"; - } - { - name = ".zshrc"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "robots.txt"; - text = "󰚩"; - fg = "#6c7086"; - } - { - name = "dockerfile"; - text = "󰡨"; - fg = "#89b4fa"; - } - { - name = ".git-blame-ignore-revs"; - text = ""; - fg = "#fab387"; - } - { - name = ".nvmrc"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "hyprpaper.conf"; - text = ""; - fg = "#74c7ec"; - } - { - name = ".prettierignore"; - text = ""; - fg = "#89b4fa"; - } - { - name = "rakefile"; - text = ""; - fg = "#313244"; - } - { - name = "code_of_conduct"; - text = ""; - fg = "#f38ba8"; - } - { - name = "cmakelists.txt"; - text = ""; - fg = "#cdd6f4"; - } - { - name = ".env"; - text = ""; - fg = "#f9e2af"; - } - { - name = "copying.lesser"; - text = ""; - fg = "#f9e2af"; - } - { - name = "readme"; - text = "󰂺"; - fg = "#f5e0dc"; - } - { - name = "settings.gradle"; - text = ""; - fg = "#585b70"; - } - { - name = "gruntfile.coffee"; - text = ""; - fg = "#fab387"; - } - { - name = ".eslintignore"; - text = ""; - fg = "#585b70"; - } - { - name = "kdenliverc"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".prettierrc.cjs"; - text = ""; - fg = "#89b4fa"; - } - { - name = "cantorrc"; - text = ""; - fg = "#89b4fa"; - } - { - name = "rmd"; - text = ""; - fg = "#74c7ec"; - } - { - name = "vagrantfile$"; - text = ""; - fg = "#6c7086"; - } - { - name = ".Xauthority"; - text = ""; - fg = "#fab387"; - } - { - name = "prettier.config.ts"; - text = ""; - fg = "#89b4fa"; - } - { - name = "node_modules"; - text = ""; - fg = "#f38ba8"; - } - { - name = ".prettierrc.toml"; - text = ""; - fg = "#89b4fa"; - } - { - name = "build.zig.zon"; - text = ""; - fg = "#fab387"; - } - { - name = ".ds_store"; - text = ""; - fg = "#45475a"; - } - { - name = "PKGBUILD"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".prettierrc"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".bash_profile"; - text = ""; - fg = "#a6e3a1"; - } - { - name = ".npmignore"; - text = ""; - fg = "#f38ba8"; - } - { - name = ".mailmap"; - text = "󰊢"; - fg = "#fab387"; - } - { - name = ".codespellrc"; - text = "󰓆"; - fg = "#a6e3a1"; - } - { - name = "svelte.config.js"; - text = ""; - fg = "#fab387"; - } - { - name = "eslint.config.ts"; - text = ""; - fg = "#585b70"; - } - { - name = "config"; - text = ""; - fg = "#7f849c"; - } - { - name = ".gitlab-ci.yml"; - text = ""; - fg = "#fab387"; - } - { - name = ".gitconfig"; - text = ""; - fg = "#fab387"; - } - { - name = "_gvimrc"; - text = ""; - fg = "#a6e3a1"; - } - { - name = ".xinitrc"; - text = ""; - fg = "#fab387"; - } - { - name = "checkhealth"; - text = "󰓙"; - fg = "#89b4fa"; - } - { - name = "sxhkdrc"; - text = ""; - fg = "#313244"; - } - { - name = ".bashrc"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "tailwind.config.mjs"; - text = "󱏿"; - fg = "#74c7ec"; - } - { - name = "ext_typoscript_setup.txt"; - text = ""; - fg = "#fab387"; - } - { - name = "commitlint.config.ts"; - text = "󰜘"; - fg = "#94e2d5"; - } - { - name = "py.typed"; - text = ""; - fg = "#f9e2af"; - } - { - name = ".nanorc"; - text = ""; - fg = "#313244"; - } - { - name = "commit_editmsg"; - text = ""; - fg = "#fab387"; - } - { - name = ".luaurc"; - text = ""; - fg = "#89b4fa"; - } - { - name = "fp-lib-table"; - text = ""; - fg = "#f5e0dc"; - } - { - name = ".editorconfig"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "justfile"; - text = ""; - fg = "#7f849c"; - } - { - name = "kdeglobals"; - text = ""; - fg = "#89b4fa"; - } - { - name = "license.md"; - text = ""; - fg = "#f9e2af"; - } - { - name = ".clang-format"; - text = ""; - fg = "#7f849c"; - } - { - name = "docker-compose.yaml"; - text = "󰡨"; - fg = "#89b4fa"; - } - { - name = "copying"; - text = ""; - fg = "#f9e2af"; - } - { - name = "go.mod"; - text = ""; - fg = "#74c7ec"; - } - { - name = "lxqt.conf"; - text = ""; - fg = "#89b4fa"; - } - { - name = "brewfile"; - text = ""; - fg = "#313244"; - } - { - name = "gulpfile.coffee"; - text = ""; - fg = "#f38ba8"; - } - { - name = ".dockerignore"; - text = "󰡨"; - fg = "#89b4fa"; - } - { - name = ".settings.json"; - text = ""; - fg = "#6c7086"; - } - { - name = "tailwind.config.js"; - text = "󱏿"; - fg = "#74c7ec"; - } - { - name = ".clang-tidy"; - text = ""; - fg = "#7f849c"; - } - { - name = ".gvimrc"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "nuxt.config.cjs"; - text = "󱄆"; - fg = "#a6e3a1"; - } - { - name = "xsettingsd.conf"; - text = ""; - fg = "#fab387"; - } - { - name = "nuxt.config.js"; - text = "󱄆"; - fg = "#a6e3a1"; - } - { - name = "eslint.config.cjs"; - text = ""; - fg = "#585b70"; - } - { - name = "sym-lib-table"; - text = ""; - fg = "#f5e0dc"; - } - { - name = ".condarc"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "xmonad.hs"; - text = ""; - fg = "#f38ba8"; - } - { - name = "tmux.conf"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "xmobarrc.hs"; - text = ""; - fg = "#f38ba8"; - } - { - name = ".prettierrc.yaml"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".pre-commit-config.yaml"; - text = "󰛢"; - fg = "#fab387"; - } - { - name = "i3blocks.conf"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "xorg.conf"; - text = ""; - fg = "#fab387"; - } - { - name = ".zshenv"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "vlcrc"; - text = "󰕼"; - fg = "#fab387"; - } - { - name = "license"; - text = ""; - fg = "#f9e2af"; - } - { - name = "unlicense"; - text = ""; - fg = "#f9e2af"; - } - { - name = "tmux.conf.local"; - text = ""; - fg = "#a6e3a1"; - } - { - name = ".SRCINFO"; - text = "󰣇"; - fg = "#89b4fa"; - } - { - name = "tailwind.config.ts"; - text = "󱏿"; - fg = "#74c7ec"; - } - { - name = "security.md"; - text = "󰒃"; - fg = "#bac2de"; - } - { - name = "security"; - text = "󰒃"; - fg = "#bac2de"; - } - { - name = ".eslintrc"; - text = ""; - fg = "#585b70"; - } - { - name = "gradle.properties"; - text = ""; - fg = "#585b70"; - } - { - name = "code_of_conduct.md"; - text = ""; - fg = "#f38ba8"; - } - { - name = "PrusaSlicerGcodeViewer.ini"; - text = ""; - fg = "#fab387"; - } - { - name = "PrusaSlicer.ini"; - text = ""; - fg = "#fab387"; - } - { - name = "procfile"; - text = ""; - fg = "#7f849c"; - } - { - name = "mpv.conf"; - text = ""; - fg = "#1e1e2e"; - } - { - name = ".prettierrc.json5"; - text = ""; - fg = "#89b4fa"; - } - { - name = "i3status.conf"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "prettier.config.mjs"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".pylintrc"; - text = ""; - fg = "#7f849c"; - } - { - name = "prettier.config.cjs"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".luacheckrc"; - text = ""; - fg = "#89b4fa"; - } - { - name = "containerfile"; - text = "󰡨"; - fg = "#89b4fa"; - } - { - name = "eslint.config.mjs"; - text = ""; - fg = "#585b70"; - } - { - name = "gruntfile.js"; - text = ""; - fg = "#fab387"; - } - { - name = "bun.lockb"; - text = ""; - fg = "#f5e0dc"; - } - { - name = ".gitattributes"; - text = ""; - fg = "#fab387"; - } - { - name = "gruntfile.ts"; - text = ""; - fg = "#fab387"; - } - { - name = "pom.xml"; - text = ""; - fg = "#313244"; - } - { - name = "favicon.ico"; - text = ""; - fg = "#f9e2af"; - } - { - name = "package-lock.json"; - text = ""; - fg = "#313244"; - } - { - name = "build"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "package.json"; - text = ""; - fg = "#f38ba8"; - } - { - name = "nuxt.config.ts"; - text = "󱄆"; - fg = "#a6e3a1"; - } - { - name = "nuxt.config.mjs"; - text = "󱄆"; - fg = "#a6e3a1"; - } - { - name = "mix.lock"; - text = ""; - fg = "#7f849c"; - } - { - name = "makefile"; - text = ""; - fg = "#7f849c"; - } - { - name = "gulpfile.js"; - text = ""; - fg = "#f38ba8"; - } - { - name = "lxde-rc.xml"; - text = ""; - fg = "#9399b2"; - } - { - name = "kritarc"; - text = ""; - fg = "#cba6f7"; - } - { - name = "gtkrc"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "ionic.config.json"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".prettierrc.mjs"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".prettierrc.yml"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".npmrc"; - text = ""; - fg = "#f38ba8"; - } - { - name = "weston.ini"; - text = ""; - fg = "#f9e2af"; - } - { - name = "gulpfile.babel.js"; - text = ""; - fg = "#f38ba8"; - } - { - name = "i18n.config.ts"; - text = "󰗊"; - fg = "#7f849c"; - } - { - name = "commitlint.config.js"; - text = "󰜘"; - fg = "#94e2d5"; - } - { - name = ".gitmodules"; - text = ""; - fg = "#fab387"; - } - { - name = "gradle-wrapper.properties"; - text = ""; - fg = "#585b70"; - } - { - name = "hypridle.conf"; - text = ""; - fg = "#74c7ec"; - } - { - name = "vercel.json"; - text = "▲"; - fg = "#f5e0dc"; - } - { - name = "hyprlock.conf"; - text = ""; - fg = "#74c7ec"; - } - { - name = "go.sum"; - text = ""; - fg = "#74c7ec"; - } - { - name = "kdenlive-layoutsrc"; - text = ""; - fg = "#89b4fa"; - } - { - name = "gruntfile.babel.js"; - text = ""; - fg = "#fab387"; - } - { - name = "compose.yml"; - text = "󰡨"; - fg = "#89b4fa"; - } - { - name = "i18n.config.js"; - text = "󰗊"; - fg = "#7f849c"; - } - { - name = "readme.md"; - text = "󰂺"; - fg = "#f5e0dc"; - } - { - name = "gradlew"; - text = ""; - fg = "#585b70"; - } - { - name = "go.work"; - text = ""; - fg = "#74c7ec"; - } - { - name = "gulpfile.ts"; - text = ""; - fg = "#f38ba8"; - } - { - name = "gnumakefile"; - text = ""; - fg = "#7f849c"; - } - { - name = "FreeCAD.conf"; - text = ""; - fg = "#f38ba8"; - } - { - name = "compose.yaml"; - text = "󰡨"; - fg = "#89b4fa"; - } - { - name = "eslint.config.js"; - text = ""; - fg = "#585b70"; - } - { - name = "hyprland.conf"; - text = ""; - fg = "#74c7ec"; - } - { - name = "docker-compose.yml"; - text = "󰡨"; - fg = "#89b4fa"; - } - { - name = "groovy"; - text = ""; - fg = "#585b70"; - } - { - name = "QtProject.conf"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "platformio.ini"; - text = ""; - fg = "#fab387"; - } - { - name = "build.gradle"; - text = ""; - fg = "#585b70"; - } - { - name = ".nuxtrc"; - text = "󱄆"; - fg = "#a6e3a1"; - } - { - name = "_vimrc"; - text = ""; - fg = "#a6e3a1"; - } - { - name = ".zprofile"; - text = ""; - fg = "#a6e3a1"; - } - { - name = ".xsession"; - text = ""; - fg = "#fab387"; - } - { - name = "prettier.config.js"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".babelrc"; - text = ""; - fg = "#f9e2af"; - } - { - name = "workspace"; - text = ""; - fg = "#a6e3a1"; - } - { - name = ".prettierrc.json"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".prettierrc.js"; - text = ""; - fg = "#89b4fa"; - } - { - name = ".Xresources"; - text = ""; - fg = "#fab387"; - } - { - name = ".gitignore"; - text = ""; - fg = "#fab387"; - } - { - name = ".justfile"; - text = ""; - fg = "#7f849c"; - } - ]; - exts = [ - { - name = "otf"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "import"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "krz"; - text = ""; - fg = "#cba6f7"; - } - { - name = "adb"; - text = ""; - fg = "#94e2d5"; - } - { - name = "ttf"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "webpack"; - text = "󰜫"; - fg = "#74c7ec"; - } - { - name = "dart"; - text = ""; - fg = "#585b70"; - } - { - name = "vsh"; - text = ""; - fg = "#7f849c"; - } - { - name = "doc"; - text = "󰈬"; - fg = "#585b70"; - } - { - name = "zsh"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "ex"; - text = ""; - fg = "#7f849c"; - } - { - name = "hx"; - text = ""; - fg = "#fab387"; - } - { - name = "fodt"; - text = ""; - fg = "#74c7ec"; - } - { - name = "mojo"; - text = ""; - fg = "#fab387"; - } - { - name = "templ"; - text = ""; - fg = "#f9e2af"; - } - { - name = "nix"; - text = ""; - fg = "#74c7ec"; - } - { - name = "cshtml"; - text = "󱦗"; - fg = "#585b70"; - } - { - name = "fish"; - text = ""; - fg = "#585b70"; - } - { - name = "ply"; - text = "󰆧"; - fg = "#7f849c"; - } - { - name = "sldprt"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "gemspec"; - text = ""; - fg = "#313244"; - } - { - name = "mjs"; - text = ""; - fg = "#f9e2af"; - } - { - name = "csh"; - text = ""; - fg = "#585b70"; - } - { - name = "cmake"; - text = ""; - fg = "#cdd6f4"; - } - { - name = "fodp"; - text = ""; - fg = "#fab387"; - } - { - name = "vi"; - text = ""; - fg = "#f9e2af"; - } - { - name = "msf"; - text = ""; - fg = "#89b4fa"; - } - { - name = "blp"; - text = "󰺾"; - fg = "#89b4fa"; - } - { - name = "less"; - text = ""; - fg = "#45475a"; - } - { - name = "sh"; - text = ""; - fg = "#585b70"; - } - { - name = "odg"; - text = ""; - fg = "#f9e2af"; - } - { - name = "mint"; - text = "󰌪"; - fg = "#a6e3a1"; - } - { - name = "dll"; - text = ""; - fg = "#11111b"; - } - { - name = "odf"; - text = ""; - fg = "#f38ba8"; - } - { - name = "sqlite3"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "Dockerfile"; - text = "󰡨"; - fg = "#89b4fa"; - } - { - name = "ksh"; - text = ""; - fg = "#585b70"; - } - { - name = "rmd"; - text = ""; - fg = "#74c7ec"; - } - { - name = "wv"; - text = ""; - fg = "#74c7ec"; - } - { - name = "xml"; - text = "󰗀"; - fg = "#fab387"; - } - { - name = "markdown"; - text = ""; - fg = "#cdd6f4"; - } - { - name = "qml"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "3gp"; - text = ""; - fg = "#fab387"; - } - { - name = "pxi"; - text = ""; - fg = "#89b4fa"; - } - { - name = "flac"; - text = ""; - fg = "#6c7086"; - } - { - name = "gpr"; - text = ""; - fg = "#cba6f7"; - } - { - name = "huff"; - text = "󰡘"; - fg = "#585b70"; - } - { - name = "json"; - text = ""; - fg = "#f9e2af"; - } - { - name = "gv"; - text = "󱁉"; - fg = "#585b70"; - } - { - name = "bmp"; - text = ""; - fg = "#7f849c"; - } - { - name = "lock"; - text = ""; - fg = "#bac2de"; - } - { - name = "sha384"; - text = "󰕥"; - fg = "#7f849c"; - } - { - name = "cobol"; - text = "⚙"; - fg = "#585b70"; - } - { - name = "cob"; - text = "⚙"; - fg = "#585b70"; - } - { - name = "java"; - text = ""; - fg = "#f38ba8"; - } - { - name = "cjs"; - text = ""; - fg = "#f9e2af"; - } - { - name = "qm"; - text = ""; - fg = "#74c7ec"; - } - { - name = "ebuild"; - text = ""; - fg = "#45475a"; - } - { - name = "mustache"; - text = ""; - fg = "#fab387"; - } - { - name = "terminal"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "ejs"; - text = ""; - fg = "#f9e2af"; - } - { - name = "brep"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "rar"; - text = ""; - fg = "#fab387"; - } - { - name = "gradle"; - text = ""; - fg = "#585b70"; - } - { - name = "gnumakefile"; - text = ""; - fg = "#7f849c"; - } - { - name = "applescript"; - text = ""; - fg = "#7f849c"; - } - { - name = "elm"; - text = ""; - fg = "#74c7ec"; - } - { - name = "ebook"; - text = ""; - fg = "#fab387"; - } - { - name = "kra"; - text = ""; - fg = "#cba6f7"; - } - { - name = "tf"; - text = ""; - fg = "#585b70"; - } - { - name = "xls"; - text = "󰈛"; - fg = "#585b70"; - } - { - name = "fnl"; - text = ""; - fg = "#f9e2af"; - } - { - name = "kdbx"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "kicad_pcb"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "cfg"; - text = ""; - fg = "#7f849c"; - } - { - name = "ape"; - text = ""; - fg = "#74c7ec"; - } - { - name = "org"; - text = ""; - fg = "#94e2d5"; - } - { - name = "yml"; - text = ""; - fg = "#7f849c"; - } - { - name = "swift"; - text = ""; - fg = "#fab387"; - } - { - name = "eln"; - text = ""; - fg = "#7f849c"; - } - { - name = "sol"; - text = ""; - fg = "#74c7ec"; - } - { - name = "awk"; - text = ""; - fg = "#585b70"; - } - { - name = "7z"; - text = ""; - fg = "#fab387"; - } - { - name = "apl"; - text = "⍝"; - fg = "#fab387"; - } - { - name = "epp"; - text = ""; - fg = "#fab387"; - } - { - name = "app"; - text = ""; - fg = "#45475a"; - } - { - name = "dot"; - text = "󱁉"; - fg = "#585b70"; - } - { - name = "kpp"; - text = ""; - fg = "#cba6f7"; - } - { - name = "eot"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "hpp"; - text = ""; - fg = "#7f849c"; - } - { - name = "spec.tsx"; - text = ""; - fg = "#585b70"; - } - { - name = "hurl"; - text = ""; - fg = "#f38ba8"; - } - { - name = "cxxm"; - text = ""; - fg = "#74c7ec"; - } - { - name = "c"; - text = ""; - fg = "#89b4fa"; - } - { - name = "fcmacro"; - text = ""; - fg = "#f38ba8"; - } - { - name = "sass"; - text = ""; - fg = "#f38ba8"; - } - { - name = "yaml"; - text = ""; - fg = "#7f849c"; - } - { - name = "xz"; - text = ""; - fg = "#fab387"; - } - { - name = "material"; - text = "󰔉"; - fg = "#f38ba8"; - } - { - name = "json5"; - text = ""; - fg = "#f9e2af"; - } - { - name = "signature"; - text = "λ"; - fg = "#fab387"; - } - { - name = "3mf"; - text = "󰆧"; - fg = "#7f849c"; - } - { - name = "jpg"; - text = ""; - fg = "#7f849c"; - } - { - name = "xpi"; - text = ""; - fg = "#fab387"; - } - { - name = "fcmat"; - text = ""; - fg = "#f38ba8"; - } - { - name = "pot"; - text = ""; - fg = "#74c7ec"; - } - { - name = "bin"; - text = ""; - fg = "#45475a"; - } - { - name = "xlsx"; - text = "󰈛"; - fg = "#585b70"; - } - { - name = "aac"; - text = ""; - fg = "#74c7ec"; - } - { - name = "kicad_sym"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "xcstrings"; - text = ""; - fg = "#74c7ec"; - } - { - name = "lff"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "xcf"; - text = ""; - fg = "#585b70"; - } - { - name = "azcli"; - text = ""; - fg = "#6c7086"; - } - { - name = "license"; - text = ""; - fg = "#f9e2af"; - } - { - name = "jsonc"; - text = ""; - fg = "#f9e2af"; - } - { - name = "xaml"; - text = "󰙳"; - fg = "#585b70"; - } - { - name = "md5"; - text = "󰕥"; - fg = "#7f849c"; - } - { - name = "xm"; - text = ""; - fg = "#74c7ec"; - } - { - name = "sln"; - text = ""; - fg = "#6c7086"; - } - { - name = "jl"; - text = ""; - fg = "#7f849c"; - } - { - name = "ml"; - text = ""; - fg = "#fab387"; - } - { - name = "http"; - text = ""; - fg = "#89b4fa"; - } - { - name = "x"; - text = ""; - fg = "#89b4fa"; - } - { - name = "wvc"; - text = ""; - fg = "#74c7ec"; - } - { - name = "wrz"; - text = "󰆧"; - fg = "#7f849c"; - } - { - name = "csproj"; - text = "󰪮"; - fg = "#585b70"; - } - { - name = "wrl"; - text = "󰆧"; - fg = "#7f849c"; - } - { - name = "wma"; - text = ""; - fg = "#74c7ec"; - } - { - name = "woff2"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "woff"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "tscn"; - text = ""; - fg = "#7f849c"; - } - { - name = "webmanifest"; - text = ""; - fg = "#f9e2af"; - } - { - name = "webm"; - text = ""; - fg = "#fab387"; - } - { - name = "fcbak"; - text = ""; - fg = "#f38ba8"; - } - { - name = "log"; - text = "󰌱"; - fg = "#cdd6f4"; - } - { - name = "wav"; - text = ""; - fg = "#74c7ec"; - } - { - name = "wasm"; - text = ""; - fg = "#585b70"; - } - { - name = "styl"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "gif"; - text = ""; - fg = "#7f849c"; - } - { - name = "resi"; - text = ""; - fg = "#f38ba8"; - } - { - name = "aiff"; - text = ""; - fg = "#74c7ec"; - } - { - name = "sha256"; - text = "󰕥"; - fg = "#7f849c"; - } - { - name = "igs"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "vsix"; - text = ""; - fg = "#6c7086"; - } - { - name = "vim"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "diff"; - text = ""; - fg = "#45475a"; - } - { - name = "drl"; - text = ""; - fg = "#eba0ac"; - } - { - name = "erl"; - text = ""; - fg = "#f38ba8"; - } - { - name = "vhdl"; - text = "󰍛"; - fg = "#a6e3a1"; - } - { - name = "🔥"; - text = ""; - fg = "#fab387"; - } - { - name = "hrl"; - text = ""; - fg = "#f38ba8"; - } - { - name = "fsi"; - text = ""; - fg = "#74c7ec"; - } - { - name = "mm"; - text = ""; - fg = "#74c7ec"; - } - { - name = "bz"; - text = ""; - fg = "#fab387"; - } - { - name = "vh"; - text = "󰍛"; - fg = "#a6e3a1"; - } - { - name = "kdb"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "gz"; - text = ""; - fg = "#fab387"; - } - { - name = "cpp"; - text = ""; - fg = "#74c7ec"; - } - { - name = "ui"; - text = ""; - fg = "#6c7086"; - } - { - name = "txt"; - text = "󰈙"; - fg = "#a6e3a1"; - } - { - name = "spec.ts"; - text = ""; - fg = "#74c7ec"; - } - { - name = "ccm"; - text = ""; - fg = "#f38ba8"; - } - { - name = "typoscript"; - text = ""; - fg = "#fab387"; - } - { - name = "typ"; - text = ""; - fg = "#89dceb"; - } - { - name = "txz"; - text = ""; - fg = "#fab387"; - } - { - name = "test.ts"; - text = ""; - fg = "#74c7ec"; - } - { - name = "tsx"; - text = ""; - fg = "#585b70"; - } - { - name = "mk"; - text = ""; - fg = "#7f849c"; - } - { - name = "webp"; - text = ""; - fg = "#7f849c"; - } - { - name = "opus"; - text = ""; - fg = "#6c7086"; - } - { - name = "bicep"; - text = ""; - fg = "#74c7ec"; - } - { - name = "ts"; - text = ""; - fg = "#74c7ec"; - } - { - name = "tres"; - text = ""; - fg = "#7f849c"; - } - { - name = "torrent"; - text = ""; - fg = "#94e2d5"; - } - { - name = "cxx"; - text = ""; - fg = "#74c7ec"; - } - { - name = "iso"; - text = ""; - fg = "#f2cdcd"; - } - { - name = "ixx"; - text = ""; - fg = "#74c7ec"; - } - { - name = "hxx"; - text = ""; - fg = "#7f849c"; - } - { - name = "gql"; - text = ""; - fg = "#f38ba8"; - } - { - name = "tmux"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "ini"; - text = ""; - fg = "#7f849c"; - } - { - name = "m3u8"; - text = "󰲹"; - fg = "#f38ba8"; - } - { - name = "image"; - text = ""; - fg = "#f2cdcd"; - } - { - name = "tfvars"; - text = ""; - fg = "#585b70"; - } - { - name = "tex"; - text = ""; - fg = "#45475a"; - } - { - name = "cbl"; - text = "⚙"; - fg = "#585b70"; - } - { - name = "flc"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "elc"; - text = ""; - fg = "#7f849c"; - } - { - name = "test.tsx"; - text = ""; - fg = "#585b70"; - } - { - name = "twig"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "sql"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "test.jsx"; - text = ""; - fg = "#74c7ec"; - } - { - name = "htm"; - text = ""; - fg = "#fab387"; - } - { - name = "gcode"; - text = "󰐫"; - fg = "#6c7086"; - } - { - name = "test.js"; - text = ""; - fg = "#f9e2af"; - } - { - name = "ino"; - text = ""; - fg = "#74c7ec"; - } - { - name = "tcl"; - text = "󰛓"; - fg = "#585b70"; - } - { - name = "cljs"; - text = ""; - fg = "#74c7ec"; - } - { - name = "tsconfig"; - text = ""; - fg = "#fab387"; - } - { - name = "img"; - text = ""; - fg = "#f2cdcd"; - } - { - name = "t"; - text = ""; - fg = "#74c7ec"; - } - { - name = "fcstd1"; - text = ""; - fg = "#f38ba8"; - } - { - name = "out"; - text = ""; - fg = "#45475a"; - } - { - name = "jsx"; - text = ""; - fg = "#74c7ec"; - } - { - name = "bash"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "edn"; - text = ""; - fg = "#74c7ec"; - } - { - name = "rss"; - text = ""; - fg = "#fab387"; - } - { - name = "flf"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "cache"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "sbt"; - text = ""; - fg = "#f38ba8"; - } - { - name = "cppm"; - text = ""; - fg = "#74c7ec"; - } - { - name = "svelte"; - text = ""; - fg = "#fab387"; - } - { - name = "mo"; - text = "∞"; - fg = "#7f849c"; - } - { - name = "sv"; - text = "󰍛"; - fg = "#a6e3a1"; - } - { - name = "ko"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "suo"; - text = ""; - fg = "#6c7086"; - } - { - name = "sldasm"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "icalendar"; - text = ""; - fg = "#313244"; - } - { - name = "go"; - text = ""; - fg = "#74c7ec"; - } - { - name = "sublime"; - text = ""; - fg = "#fab387"; - } - { - name = "stl"; - text = "󰆧"; - fg = "#7f849c"; - } - { - name = "mobi"; - text = ""; - fg = "#fab387"; - } - { - name = "graphql"; - text = ""; - fg = "#f38ba8"; - } - { - name = "m3u"; - text = "󰲹"; - fg = "#f38ba8"; - } - { - name = "cpy"; - text = "⚙"; - fg = "#585b70"; - } - { - name = "kdenlive"; - text = ""; - fg = "#89b4fa"; - } - { - name = "pyo"; - text = ""; - fg = "#f9e2af"; - } - { - name = "po"; - text = ""; - fg = "#74c7ec"; - } - { - name = "scala"; - text = ""; - fg = "#f38ba8"; - } - { - name = "exs"; - text = ""; - fg = "#7f849c"; - } - { - name = "odp"; - text = ""; - fg = "#fab387"; - } - { - name = "dump"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "stp"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "step"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "ste"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "aif"; - text = ""; - fg = "#74c7ec"; - } - { - name = "strings"; - text = ""; - fg = "#74c7ec"; - } - { - name = "cp"; - text = ""; - fg = "#74c7ec"; - } - { - name = "fsscript"; - text = ""; - fg = "#74c7ec"; - } - { - name = "mli"; - text = ""; - fg = "#fab387"; - } - { - name = "bak"; - text = "󰁯"; - fg = "#7f849c"; - } - { - name = "ssa"; - text = "󰨖"; - fg = "#f9e2af"; - } - { - name = "toml"; - text = ""; - fg = "#585b70"; - } - { - name = "makefile"; - text = ""; - fg = "#7f849c"; - } - { - name = "php"; - text = ""; - fg = "#7f849c"; - } - { - name = "zst"; - text = ""; - fg = "#fab387"; - } - { - name = "spec.jsx"; - text = ""; - fg = "#74c7ec"; - } - { - name = "kbx"; - text = "󰯄"; - fg = "#6c7086"; - } - { - name = "fbx"; - text = "󰆧"; - fg = "#7f849c"; - } - { - name = "blend"; - text = "󰂫"; - fg = "#fab387"; - } - { - name = "ifc"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "spec.js"; - text = ""; - fg = "#f9e2af"; - } - { - name = "so"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "desktop"; - text = ""; - fg = "#45475a"; - } - { - name = "sml"; - text = "λ"; - fg = "#fab387"; - } - { - name = "slvs"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "pp"; - text = ""; - fg = "#fab387"; - } - { - name = "ps1"; - text = "󰨊"; - fg = "#6c7086"; - } - { - name = "dropbox"; - text = ""; - fg = "#6c7086"; - } - { - name = "kicad_mod"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "bat"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "slim"; - text = ""; - fg = "#fab387"; - } - { - name = "skp"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "css"; - text = ""; - fg = "#89b4fa"; - } - { - name = "xul"; - text = ""; - fg = "#fab387"; - } - { - name = "ige"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "glb"; - text = ""; - fg = "#fab387"; - } - { - name = "ppt"; - text = "󰈧"; - fg = "#f38ba8"; - } - { - name = "sha512"; - text = "󰕥"; - fg = "#7f849c"; - } - { - name = "ics"; - text = ""; - fg = "#313244"; - } - { - name = "mdx"; - text = ""; - fg = "#74c7ec"; - } - { - name = "sha1"; - text = "󰕥"; - fg = "#7f849c"; - } - { - name = "f3d"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "ass"; - text = "󰨖"; - fg = "#f9e2af"; - } - { - name = "godot"; - text = ""; - fg = "#7f849c"; - } - { - name = "ifb"; - text = ""; - fg = "#313244"; - } - { - name = "cson"; - text = ""; - fg = "#f9e2af"; - } - { - name = "lib"; - text = ""; - fg = "#11111b"; - } - { - name = "luac"; - text = ""; - fg = "#74c7ec"; - } - { - name = "heex"; - text = ""; - fg = "#7f849c"; - } - { - name = "scm"; - text = "󰘧"; - fg = "#f5e0dc"; - } - { - name = "psd1"; - text = "󰨊"; - fg = "#7f849c"; - } - { - name = "sc"; - text = ""; - fg = "#f38ba8"; - } - { - name = "scad"; - text = ""; - fg = "#f9e2af"; - } - { - name = "kts"; - text = ""; - fg = "#6c7086"; - } - { - name = "svh"; - text = "󰍛"; - fg = "#a6e3a1"; - } - { - name = "mts"; - text = ""; - fg = "#74c7ec"; - } - { - name = "nfo"; - text = ""; - fg = "#f9e2af"; - } - { - name = "pck"; - text = ""; - fg = "#7f849c"; - } - { - name = "rproj"; - text = "󰗆"; - fg = "#a6e3a1"; - } - { - name = "rlib"; - text = ""; - fg = "#fab387"; - } - { - name = "cljd"; - text = ""; - fg = "#74c7ec"; - } - { - name = "ods"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "res"; - text = ""; - fg = "#f38ba8"; - } - { - name = "apk"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "haml"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "d.ts"; - text = ""; - fg = "#fab387"; - } - { - name = "razor"; - text = "󱦘"; - fg = "#585b70"; - } - { - name = "rake"; - text = ""; - fg = "#313244"; - } - { - name = "patch"; - text = ""; - fg = "#45475a"; - } - { - name = "cuh"; - text = ""; - fg = "#7f849c"; - } - { - name = "d"; - text = ""; - fg = "#f38ba8"; - } - { - name = "query"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "psb"; - text = ""; - fg = "#74c7ec"; - } - { - name = "nu"; - text = ">"; - fg = "#a6e3a1"; - } - { - name = "mov"; - text = ""; - fg = "#fab387"; - } - { - name = "lrc"; - text = "󰨖"; - fg = "#f9e2af"; - } - { - name = "pyx"; - text = ""; - fg = "#89b4fa"; - } - { - name = "pyw"; - text = ""; - fg = "#89b4fa"; - } - { - name = "cu"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "bazel"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "obj"; - text = "󰆧"; - fg = "#7f849c"; - } - { - name = "pyi"; - text = ""; - fg = "#f9e2af"; - } - { - name = "pyd"; - text = ""; - fg = "#f9e2af"; - } - { - name = "exe"; - text = ""; - fg = "#45475a"; - } - { - name = "pyc"; - text = ""; - fg = "#f9e2af"; - } - { - name = "fctb"; - text = ""; - fg = "#f38ba8"; - } - { - name = "part"; - text = ""; - fg = "#94e2d5"; - } - { - name = "blade.php"; - text = ""; - fg = "#f38ba8"; - } - { - name = "git"; - text = ""; - fg = "#fab387"; - } - { - name = "psd"; - text = ""; - fg = "#74c7ec"; - } - { - name = "qss"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "csv"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "psm1"; - text = "󰨊"; - fg = "#7f849c"; - } - { - name = "dconf"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "config.ru"; - text = ""; - fg = "#313244"; - } - { - name = "prisma"; - text = ""; - fg = "#6c7086"; - } - { - name = "conf"; - text = ""; - fg = "#7f849c"; - } - { - name = "clj"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "o"; - text = ""; - fg = "#45475a"; - } - { - name = "mp4"; - text = ""; - fg = "#fab387"; - } - { - name = "cc"; - text = ""; - fg = "#f38ba8"; - } - { - name = "kicad_prl"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "bz3"; - text = ""; - fg = "#fab387"; - } - { - name = "asc"; - text = "󰦝"; - fg = "#6c7086"; - } - { - name = "png"; - text = ""; - fg = "#7f849c"; - } - { - name = "android"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "pm"; - text = ""; - fg = "#74c7ec"; - } - { - name = "h"; - text = ""; - fg = "#7f849c"; - } - { - name = "pls"; - text = "󰲹"; - fg = "#f38ba8"; - } - { - name = "ipynb"; - text = ""; - fg = "#fab387"; - } - { - name = "pl"; - text = ""; - fg = "#74c7ec"; - } - { - name = "ads"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "sqlite"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "pdf"; - text = ""; - fg = "#585b70"; - } - { - name = "pcm"; - text = ""; - fg = "#6c7086"; - } - { - name = "ico"; - text = ""; - fg = "#f9e2af"; - } - { - name = "a"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "R"; - text = "󰟔"; - fg = "#6c7086"; - } - { - name = "ogg"; - text = ""; - fg = "#6c7086"; - } - { - name = "pxd"; - text = ""; - fg = "#89b4fa"; - } - { - name = "kdenlivetitle"; - text = ""; - fg = "#89b4fa"; - } - { - name = "jxl"; - text = ""; - fg = "#7f849c"; - } - { - name = "nswag"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "nim"; - text = ""; - fg = "#f9e2af"; - } - { - name = "bqn"; - text = "⎉"; - fg = "#6c7086"; - } - { - name = "cts"; - text = ""; - fg = "#74c7ec"; - } - { - name = "fcparam"; - text = ""; - fg = "#f38ba8"; - } - { - name = "rs"; - text = ""; - fg = "#fab387"; - } - { - name = "mpp"; - text = ""; - fg = "#74c7ec"; - } - { - name = "fdmdownload"; - text = ""; - fg = "#94e2d5"; - } - { - name = "pptx"; - text = "󰈧"; - fg = "#f38ba8"; - } - { - name = "jpeg"; - text = ""; - fg = "#7f849c"; - } - { - name = "bib"; - text = "󱉟"; - fg = "#f9e2af"; - } - { - name = "vhd"; - text = "󰍛"; - fg = "#a6e3a1"; - } - { - name = "m"; - text = ""; - fg = "#89b4fa"; - } - { - name = "js"; - text = ""; - fg = "#f9e2af"; - } - { - name = "eex"; - text = ""; - fg = "#7f849c"; - } - { - name = "tbc"; - text = "󰛓"; - fg = "#585b70"; - } - { - name = "astro"; - text = ""; - fg = "#f38ba8"; - } - { - name = "sha224"; - text = "󰕥"; - fg = "#7f849c"; - } - { - name = "xcplayground"; - text = ""; - fg = "#fab387"; - } - { - name = "el"; - text = ""; - fg = "#7f849c"; - } - { - name = "m4v"; - text = ""; - fg = "#fab387"; - } - { - name = "m4a"; - text = ""; - fg = "#74c7ec"; - } - { - name = "cs"; - text = "󰌛"; - fg = "#585b70"; - } - { - name = "hs"; - text = ""; - fg = "#7f849c"; - } - { - name = "tgz"; - text = ""; - fg = "#fab387"; - } - { - name = "fs"; - text = ""; - fg = "#74c7ec"; - } - { - name = "luau"; - text = ""; - fg = "#89b4fa"; - } - { - name = "dxf"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "download"; - text = ""; - fg = "#94e2d5"; - } - { - name = "cast"; - text = ""; - fg = "#fab387"; - } - { - name = "qrc"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "lua"; - text = ""; - fg = "#74c7ec"; - } - { - name = "lhs"; - text = ""; - fg = "#7f849c"; - } - { - name = "md"; - text = ""; - fg = "#cdd6f4"; - } - { - name = "leex"; - text = ""; - fg = "#7f849c"; - } - { - name = "ai"; - text = ""; - fg = "#f9e2af"; - } - { - name = "lck"; - text = ""; - fg = "#bac2de"; - } - { - name = "kt"; - text = ""; - fg = "#6c7086"; - } - { - name = "bicepparam"; - text = ""; - fg = "#7f849c"; - } - { - name = "hex"; - text = ""; - fg = "#6c7086"; - } - { - name = "zig"; - text = ""; - fg = "#fab387"; - } - { - name = "bzl"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "cljc"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "kicad_dru"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "fctl"; - text = ""; - fg = "#f38ba8"; - } - { - name = "f#"; - text = ""; - fg = "#74c7ec"; - } - { - name = "odt"; - text = ""; - fg = "#74c7ec"; - } - { - name = "conda"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "vala"; - text = ""; - fg = "#585b70"; - } - { - name = "erb"; - text = ""; - fg = "#313244"; - } - { - name = "mp3"; - text = ""; - fg = "#74c7ec"; - } - { - name = "bz2"; - text = ""; - fg = "#fab387"; - } - { - name = "coffee"; - text = ""; - fg = "#f9e2af"; - } - { - name = "cr"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "f90"; - text = "󱈚"; - fg = "#585b70"; - } - { - name = "jwmrc"; - text = ""; - fg = "#6c7086"; - } - { - name = "c++"; - text = ""; - fg = "#f38ba8"; - } - { - name = "fcscript"; - text = ""; - fg = "#f38ba8"; - } - { - name = "fods"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "cue"; - text = "󰲹"; - fg = "#f38ba8"; - } - { - name = "srt"; - text = "󰨖"; - fg = "#f9e2af"; - } - { - name = "info"; - text = ""; - fg = "#f9e2af"; - } - { - name = "hh"; - text = ""; - fg = "#7f849c"; - } - { - name = "sig"; - text = "λ"; - fg = "#fab387"; - } - { - name = "html"; - text = ""; - fg = "#fab387"; - } - { - name = "iges"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "kicad_wks"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "hbs"; - text = ""; - fg = "#fab387"; - } - { - name = "fcstd"; - text = ""; - fg = "#f38ba8"; - } - { - name = "gresource"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "sub"; - text = "󰨖"; - fg = "#f9e2af"; - } - { - name = "ical"; - text = ""; - fg = "#313244"; - } - { - name = "crdownload"; - text = ""; - fg = "#94e2d5"; - } - { - name = "pub"; - text = "󰷖"; - fg = "#f9e2af"; - } - { - name = "vue"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "gd"; - text = ""; - fg = "#7f849c"; - } - { - name = "fsx"; - text = ""; - fg = "#74c7ec"; - } - { - name = "mkv"; - text = ""; - fg = "#fab387"; - } - { - name = "py"; - text = ""; - fg = "#f9e2af"; - } - { - name = "kicad_sch"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "epub"; - text = ""; - fg = "#fab387"; - } - { - name = "env"; - text = ""; - fg = "#f9e2af"; - } - { - name = "magnet"; - text = ""; - fg = "#45475a"; - } - { - name = "elf"; - text = ""; - fg = "#45475a"; - } - { - name = "fodg"; - text = ""; - fg = "#f9e2af"; - } - { - name = "svg"; - text = "󰜡"; - fg = "#fab387"; - } - { - name = "dwg"; - text = "󰻫"; - fg = "#a6e3a1"; - } - { - name = "docx"; - text = "󰈬"; - fg = "#585b70"; - } - { - name = "pro"; - text = ""; - fg = "#f9e2af"; - } - { - name = "db"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "rb"; - text = ""; - fg = "#313244"; - } - { - name = "r"; - text = "󰟔"; - fg = "#6c7086"; - } - { - name = "scss"; - text = ""; - fg = "#f38ba8"; - } - { - name = "cow"; - text = "󰆚"; - fg = "#fab387"; - } - { - name = "gleam"; - text = ""; - fg = "#f5c2e7"; - } - { - name = "v"; - text = "󰍛"; - fg = "#a6e3a1"; - } - { - name = "kicad_pro"; - text = ""; - fg = "#f5e0dc"; - } - { - name = "liquid"; - text = ""; - fg = "#a6e3a1"; - } - { - name = "zip"; - text = ""; - fg = "#fab387"; - } - ]; -} diff --git a/hosts/thinkpad/home-manager/zen/default.nix b/hosts/thinkpad/home-manager/zen/default.nix index 12c5207..8f253c5 100644 --- a/hosts/thinkpad/home-manager/zen/default.nix +++ b/hosts/thinkpad/home-manager/zen/default.nix @@ -1,7 +1,7 @@ { pkgs, inputs, ... }: { - # TODO programatically get default name + # TODO merge with shared home = { file.".zen/xdaxqlov.default/chrome" = { source = ./chrome; diff --git a/hosts/desktop/home-manager/btop.nix b/shared/home-manager/btop.nix similarity index 100% rename from hosts/desktop/home-manager/btop.nix rename to shared/home-manager/btop.nix diff --git a/hosts/desktop/home-manager/cava/cava.png b/shared/home-manager/cava/cava.png similarity index 100% rename from hosts/desktop/home-manager/cava/cava.png rename to shared/home-manager/cava/cava.png diff --git a/hosts/desktop/home-manager/cava/default.nix b/shared/home-manager/cava/default.nix similarity index 100% rename from hosts/desktop/home-manager/cava/default.nix rename to shared/home-manager/cava/default.nix diff --git a/hosts/desktop/home-manager/cursors.nix b/shared/home-manager/cursors.nix similarity index 100% rename from hosts/desktop/home-manager/cursors.nix rename to shared/home-manager/cursors.nix diff --git a/hosts/desktop/home-manager/default-applications.nix b/shared/home-manager/default-applications.nix similarity index 100% rename from hosts/desktop/home-manager/default-applications.nix rename to shared/home-manager/default-applications.nix diff --git a/shared/home-manager/default.nix b/shared/home-manager/default.nix new file mode 100644 index 0000000..b555ebf --- /dev/null +++ b/shared/home-manager/default.nix @@ -0,0 +1,53 @@ +{ + inputs, + outputs, + common, + ... +}: +let + username = common.username; + dir = common.dir; +in +{ + imports = [ + inputs.catppuccin.homeModules.catppuccin + ./btop.nix + ./cava + ./cursors.nix + ./default-applications.nix + ./development + ./fastfetch.nix + ./fish.nix + ./freetube.nix + ./gtk.nix + ./gpg.nix + ./kitty.nix + ./media + ./nextcloud.nix + ./rofi + ./hyprland + ./spicetify.nix + ./yazi + ./zen + ]; + + home = { + username = username; + homeDirectory = dir.home; + + sessionVariables = { + XDG_PICTURES_DIR = dir.pictures; # Define the default dir for pictures + }; + + # You can update Home Manager without changing this value. See + # the Home Manager release notes for a list of state version + # changes in each release. + stateVersion = common.system.version; + }; + + # Adds pkgs.unstable in order to fetch packages from unstable repositories + nixpkgs.overlays = [ outputs.overlays.unstable-packages ]; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; +} diff --git a/hosts/desktop/home-manager/development/default.nix b/shared/home-manager/development/default.nix similarity index 100% rename from hosts/desktop/home-manager/development/default.nix rename to shared/home-manager/development/default.nix diff --git a/hosts/desktop/home-manager/development/git.nix b/shared/home-manager/development/git.nix similarity index 100% rename from hosts/desktop/home-manager/development/git.nix rename to shared/home-manager/development/git.nix diff --git a/hosts/desktop/home-manager/development/nixvim/default.nix b/shared/home-manager/development/nixvim/default.nix similarity index 100% rename from hosts/desktop/home-manager/development/nixvim/default.nix rename to shared/home-manager/development/nixvim/default.nix diff --git a/hosts/desktop/home-manager/development/zed.nix b/shared/home-manager/development/zed.nix similarity index 100% rename from hosts/desktop/home-manager/development/zed.nix rename to shared/home-manager/development/zed.nix diff --git a/hosts/desktop/home-manager/fastfetch.nix b/shared/home-manager/fastfetch.nix similarity index 100% rename from hosts/desktop/home-manager/fastfetch.nix rename to shared/home-manager/fastfetch.nix diff --git a/hosts/desktop/home-manager/fish.nix b/shared/home-manager/fish.nix similarity index 100% rename from hosts/desktop/home-manager/fish.nix rename to shared/home-manager/fish.nix diff --git a/hosts/desktop/home-manager/freetube.nix b/shared/home-manager/freetube.nix similarity index 100% rename from hosts/desktop/home-manager/freetube.nix rename to shared/home-manager/freetube.nix diff --git a/hosts/desktop/home-manager/gpg.nix b/shared/home-manager/gpg.nix similarity index 100% rename from hosts/desktop/home-manager/gpg.nix rename to shared/home-manager/gpg.nix diff --git a/hosts/desktop/home-manager/gtk.nix b/shared/home-manager/gtk.nix similarity index 100% rename from hosts/desktop/home-manager/gtk.nix rename to shared/home-manager/gtk.nix diff --git a/hosts/desktop/home-manager/hyprland/binds.nix b/shared/home-manager/hyprland/binds.nix similarity index 100% rename from hosts/desktop/home-manager/hyprland/binds.nix rename to shared/home-manager/hyprland/binds.nix diff --git a/hosts/desktop/home-manager/hyprland/default.nix b/shared/home-manager/hyprland/default.nix similarity index 100% rename from hosts/desktop/home-manager/hyprland/default.nix rename to shared/home-manager/hyprland/default.nix diff --git a/hosts/desktop/home-manager/hyprland/hypridle/default.nix b/shared/home-manager/hyprland/hypridle/default.nix similarity index 100% rename from hosts/desktop/home-manager/hyprland/hypridle/default.nix rename to shared/home-manager/hyprland/hypridle/default.nix diff --git a/hosts/desktop/home-manager/hyprland/hyprlock/default.nix b/shared/home-manager/hyprland/hyprlock/default.nix similarity index 100% rename from hosts/desktop/home-manager/hyprland/hyprlock/default.nix rename to shared/home-manager/hyprland/hyprlock/default.nix diff --git a/hosts/desktop/home-manager/hyprland/hyprpanel/default.nix b/shared/home-manager/hyprland/hyprpanel/default.nix similarity index 100% rename from hosts/desktop/home-manager/hyprland/hyprpanel/default.nix rename to shared/home-manager/hyprland/hyprpanel/default.nix diff --git a/hosts/desktop/home-manager/hyprland/hyprpaper.nix b/shared/home-manager/hyprland/hyprpaper.nix similarity index 100% rename from hosts/desktop/home-manager/hyprland/hyprpaper.nix rename to shared/home-manager/hyprland/hyprpaper.nix diff --git a/hosts/desktop/home-manager/hyprland/hyprshot.nix b/shared/home-manager/hyprland/hyprshot.nix similarity index 100% rename from hosts/desktop/home-manager/hyprland/hyprshot.nix rename to shared/home-manager/hyprland/hyprshot.nix diff --git a/hosts/desktop/home-manager/hyprland/settings.nix b/shared/home-manager/hyprland/settings.nix similarity index 100% rename from hosts/desktop/home-manager/hyprland/settings.nix rename to shared/home-manager/hyprland/settings.nix diff --git a/hosts/desktop/home-manager/kitty.nix b/shared/home-manager/kitty.nix similarity index 100% rename from hosts/desktop/home-manager/kitty.nix rename to shared/home-manager/kitty.nix diff --git a/hosts/desktop/home-manager/media/default.nix b/shared/home-manager/media/default.nix similarity index 100% rename from hosts/desktop/home-manager/media/default.nix rename to shared/home-manager/media/default.nix diff --git a/hosts/desktop/home-manager/media/imv.nix b/shared/home-manager/media/imv.nix similarity index 100% rename from hosts/desktop/home-manager/media/imv.nix rename to shared/home-manager/media/imv.nix diff --git a/hosts/desktop/home-manager/media/mpv.nix b/shared/home-manager/media/mpv.nix similarity index 100% rename from hosts/desktop/home-manager/media/mpv.nix rename to shared/home-manager/media/mpv.nix diff --git a/hosts/desktop/home-manager/nextcloud.nix b/shared/home-manager/nextcloud.nix similarity index 100% rename from hosts/desktop/home-manager/nextcloud.nix rename to shared/home-manager/nextcloud.nix diff --git a/hosts/desktop/home-manager/rofi/catppuccin-mocha.rasi b/shared/home-manager/rofi/catppuccin-mocha.rasi similarity index 100% rename from hosts/desktop/home-manager/rofi/catppuccin-mocha.rasi rename to shared/home-manager/rofi/catppuccin-mocha.rasi diff --git a/hosts/desktop/home-manager/rofi/config.rasi b/shared/home-manager/rofi/config.rasi similarity index 100% rename from hosts/desktop/home-manager/rofi/config.rasi rename to shared/home-manager/rofi/config.rasi diff --git a/hosts/desktop/home-manager/rofi/default.nix b/shared/home-manager/rofi/default.nix similarity index 100% rename from hosts/desktop/home-manager/rofi/default.nix rename to shared/home-manager/rofi/default.nix diff --git a/hosts/desktop/home-manager/rofi/rofimoji.rc b/shared/home-manager/rofi/rofimoji.rc similarity index 100% rename from hosts/desktop/home-manager/rofi/rofimoji.rc rename to shared/home-manager/rofi/rofimoji.rc diff --git a/hosts/desktop/home-manager/spicetify.nix b/shared/home-manager/spicetify.nix similarity index 100% rename from hosts/desktop/home-manager/spicetify.nix rename to shared/home-manager/spicetify.nix diff --git a/hosts/desktop/home-manager/yazi/catppuccin-mocha.tmTheme b/shared/home-manager/yazi/catppuccin-mocha.tmTheme similarity index 100% rename from hosts/desktop/home-manager/yazi/catppuccin-mocha.tmTheme rename to shared/home-manager/yazi/catppuccin-mocha.tmTheme diff --git a/hosts/desktop/home-manager/yazi/default.nix b/shared/home-manager/yazi/default.nix similarity index 100% rename from hosts/desktop/home-manager/yazi/default.nix rename to shared/home-manager/yazi/default.nix diff --git a/hosts/desktop/home-manager/yazi/icons.nix b/shared/home-manager/yazi/icons.nix similarity index 100% rename from hosts/desktop/home-manager/yazi/icons.nix rename to shared/home-manager/yazi/icons.nix diff --git a/hosts/desktop/home-manager/zen/chrome/userChrome.css b/shared/home-manager/zen/chrome/userChrome.css similarity index 100% rename from hosts/desktop/home-manager/zen/chrome/userChrome.css rename to shared/home-manager/zen/chrome/userChrome.css diff --git a/hosts/desktop/home-manager/zen/chrome/userContent.css b/shared/home-manager/zen/chrome/userContent.css similarity index 100% rename from hosts/desktop/home-manager/zen/chrome/userContent.css rename to shared/home-manager/zen/chrome/userContent.css diff --git a/hosts/desktop/home-manager/zen/chrome/zen-logo.svg b/shared/home-manager/zen/chrome/zen-logo.svg similarity index 100% rename from hosts/desktop/home-manager/zen/chrome/zen-logo.svg rename to shared/home-manager/zen/chrome/zen-logo.svg diff --git a/hosts/desktop/home-manager/zen/default.nix b/shared/home-manager/zen/default.nix similarity index 100% rename from hosts/desktop/home-manager/zen/default.nix rename to shared/home-manager/zen/default.nix -- 2.47.2 From f0ce1f41694dec17f53c484d36f9f7870c9f9a9b Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Sun, 13 Apr 2025 11:40:05 +0200 Subject: [PATCH 06/15] :recycle: Moved git key to desktop config, step variable in hyprpanel audio --- hosts/desktop/home-manager/default.nix | 2 ++ shared/home-manager/development/git.nix | 5 +---- shared/home-manager/hyprland/hyprpanel/default.nix | 12 ++++++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/hosts/desktop/home-manager/default.nix b/hosts/desktop/home-manager/default.nix index 31e14ce..f3ff403 100644 --- a/hosts/desktop/home-manager/default.nix +++ b/hosts/desktop/home-manager/default.nix @@ -7,4 +7,6 @@ imports = [ (lib.custom.relativeToRoot "shared/home-manager") ]; + + programs.git.signing.key = "706F53DD087A91DE"; } diff --git a/shared/home-manager/development/git.nix b/shared/home-manager/development/git.nix index f88ea91..3381dc8 100644 --- a/shared/home-manager/development/git.nix +++ b/shared/home-manager/development/git.nix @@ -20,10 +20,7 @@ p = "push"; }; - signing = { - signByDefault = true; - key = "706F53DD087A91DE"; - }; + signing.signByDefault = true; extraConfig = { push.autoSetupRemote = true; diff --git a/shared/home-manager/hyprland/hyprpanel/default.nix b/shared/home-manager/hyprland/hyprpanel/default.nix index 784143b..b0829a8 100644 --- a/shared/home-manager/hyprland/hyprpanel/default.nix +++ b/shared/home-manager/hyprland/hyprpanel/default.nix @@ -41,10 +41,14 @@ customModules.kbLayout.leftClick = "hyprctl switchxkblayout keychron-keychron-k8-pro next"; launcher.autoDetectIcon = true; network.label = false; - volume = { - scrollDown = "${pkgs.hyprpanel}/bin/hyprpanel 'vol -1'"; - scrollUp = "${pkgs.hyprpanel}/bin/hyprpanel 'vol +1'"; - }; + volume = + let + step = 1; + in + { + scrollDown = "${pkgs.hyprpanel}/bin/hyprpanel 'vol -${step}'"; + scrollUp = "${pkgs.hyprpanel}/bin/hyprpanel 'vol +${step}'"; + }; workspaces = { show_icons = false; show_numbered = true; -- 2.47.2 From a7836ff585899153c4062a3722c1b6cd5cef28fc Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Sun, 13 Apr 2025 11:42:39 +0200 Subject: [PATCH 07/15] :bug: Fix config errors --- hosts/thinkpad/default.nix | 9 ++++++--- .../thinkpad/home-manager/hyprland/hyprpanel.nix | 2 +- .../thinkpad/home-manager/hyprland/hyprpaper.nix | 2 +- hosts/thinkpad/home-manager/hyprland/settings.nix | 4 ++-- hosts/thinkpad/modules/fonts.nix | 8 ++------ hosts/thinkpad/modules/networking.nix | 7 +++---- hosts/thinkpad/modules/sddm.nix | 3 +-- .../home-manager/hyprland/hyprpanel/default.nix | 2 +- shared/secrets/weather-api-key | Bin 54 -> 54 bytes 9 files changed, 17 insertions(+), 20 deletions(-) diff --git a/hosts/thinkpad/default.nix b/hosts/thinkpad/default.nix index 6f0823f..682f4b1 100644 --- a/hosts/thinkpad/default.nix +++ b/hosts/thinkpad/default.nix @@ -11,9 +11,12 @@ nixpkgs.overlays = [ outputs.overlays.unstable-packages ]; # Bootloader. - boot.loader = { - systemd-boot.enable = true; - efi.canTouchEfiVariables = true; + boot = { + kernelPackages = pkgs.linuxPackages_latest; + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; }; # Define a user account. Don't forget to set a password with 'passwd'. diff --git a/hosts/thinkpad/home-manager/hyprland/hyprpanel.nix b/hosts/thinkpad/home-manager/hyprland/hyprpanel.nix index dd6d3c0..68594c8 100644 --- a/hosts/thinkpad/home-manager/hyprland/hyprpanel.nix +++ b/hosts/thinkpad/home-manager/hyprland/hyprpanel.nix @@ -4,7 +4,7 @@ }: { - programs.hyprpanel.layout."bar.layouts"."*".right = lib.mkDefault [ + programs.hyprpanel.settings.layout."bar.layouts"."*".right = lib.mkDefault [ "kbinput" "volume" "network" diff --git a/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix b/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix index 267e8e4..75f058a 100644 --- a/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix +++ b/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix @@ -7,7 +7,7 @@ }: { - services.hyprpaper = + services.hyprpaper.settings = let monitor1 = builtins.toString theme.wallpaper.monitor1; in diff --git a/hosts/thinkpad/home-manager/hyprland/settings.nix b/hosts/thinkpad/home-manager/hyprland/settings.nix index eba45d4..0c5c79a 100644 --- a/hosts/thinkpad/home-manager/hyprland/settings.nix +++ b/hosts/thinkpad/home-manager/hyprland/settings.nix @@ -16,8 +16,8 @@ ]; input = { - sensitivity = 0.4; # -1.0 - 1.0, 0 means no modification. - touchpad.natural_scroll = true; + sensitivity = lib.mkDefault 0.4; # -1.0 - 1.0, 0 means no modification. + touchpad.natural_scroll = lib.mkDefault true; }; gestures = lib.mkDefault { diff --git a/hosts/thinkpad/modules/fonts.nix b/hosts/thinkpad/modules/fonts.nix index c201c85..ad5af82 100644 --- a/hosts/thinkpad/modules/fonts.nix +++ b/hosts/thinkpad/modules/fonts.nix @@ -1,15 +1,11 @@ -{ pkgs, ... }: +{ pkgs, theme, ... }: { environment.systemPackages = with pkgs; [ font-awesome # Icons ]; - fonts = - let - theme = import ../theme.nix; - in - { + fonts = { fontconfig.enable = true; packages = with pkgs; [ (nerdfonts.override { fonts = [ theme.nerdFont ]; }) diff --git a/hosts/thinkpad/modules/networking.nix b/hosts/thinkpad/modules/networking.nix index 23db0c6..cafa9fc 100644 --- a/hosts/thinkpad/modules/networking.nix +++ b/hosts/thinkpad/modules/networking.nix @@ -1,10 +1,9 @@ -let - common = import ../common.nix; -in +{ hostName, ... }: + { networking = { networkmanager.enable = true; - hostName = common.hostname; + inherit hostName; # wireless.enable = true; # Enables wireless support via wpa_supplicant. }; diff --git a/hosts/thinkpad/modules/sddm.nix b/hosts/thinkpad/modules/sddm.nix index ea1ef65..f481f12 100644 --- a/hosts/thinkpad/modules/sddm.nix +++ b/hosts/thinkpad/modules/sddm.nix @@ -1,6 +1,5 @@ -{ pkgs, ... }: +{ pkgs, theme, ... }: let - theme = import ../theme.nix; flavor = theme.flavor; in { diff --git a/shared/home-manager/hyprland/hyprpanel/default.nix b/shared/home-manager/hyprland/hyprpanel/default.nix index b0829a8..d8d2637 100644 --- a/shared/home-manager/hyprland/hyprpanel/default.nix +++ b/shared/home-manager/hyprland/hyprpanel/default.nix @@ -43,7 +43,7 @@ network.label = false; volume = let - step = 1; + step = "1"; in { scrollDown = "${pkgs.hyprpanel}/bin/hyprpanel 'vol -${step}'"; diff --git a/shared/secrets/weather-api-key b/shared/secrets/weather-api-key index f1b9cc27d2a72c3987c6fcac4a3d9f382317f220..cfc8476a72b45c47ab0ae6b101ea275a41e7c55f 100644 GIT binary patch literal 54 zcmV-60LlLVM@dveQdv+`0A==_pbi3sc!MBH)TS|EfB6)8#oOXAq$r$IbSc&_rg^5Q Mt&&|=_3J=TKw4E8I{*Lx literal 54 zcmV-60LlLVM@dveQdv+`0Nwxs<{Qv*} -- 2.47.2 From 3b6a3e5a66f0339930de27e32fdee33460b16975 Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Sun, 13 Apr 2025 13:22:57 +0200 Subject: [PATCH 08/15] :bug: Moved fmt to before git add, formatted file --- hosts/thinkpad/modules/fonts.nix | 18 +++++++++--------- justfile | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hosts/thinkpad/modules/fonts.nix b/hosts/thinkpad/modules/fonts.nix index ad5af82..260486a 100644 --- a/hosts/thinkpad/modules/fonts.nix +++ b/hosts/thinkpad/modules/fonts.nix @@ -6,14 +6,14 @@ ]; fonts = { - fontconfig.enable = true; - packages = with pkgs; [ - (nerdfonts.override { fonts = [ theme.nerdFont ]; }) - jetbrains-mono - # The line below will replace the lines above in 25.05 - # nerd-fonts.jetbrains-mono - font-awesome - ]; - }; + fontconfig.enable = true; + packages = with pkgs; [ + (nerdfonts.override { fonts = [ theme.nerdFont ]; }) + jetbrains-mono + # The line below will replace the lines above in 25.05 + # nerd-fonts.jetbrains-mono + font-awesome + ]; + }; } diff --git a/justfile b/justfile index a654adf..b14eadc 100644 --- a/justfile +++ b/justfile @@ -5,13 +5,13 @@ fmt: treefmt --on-unmatched info test *FLAGS: - git add . just fmt + git add . nh os test . {{FLAGS}} switch *FLAGS: - git add . just fmt + git add . nh os switch . {{FLAGS}} switch-now *FLAGS: -- 2.47.2 From 9611b8bb8d0e882f03cdfdde773afdd04eb24314 Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Mon, 14 Apr 2025 23:30:50 +0200 Subject: [PATCH 09/15] :sparkles: Moved modeules into shared --- flake.nix | 20 +++++---- hosts/desktop/modules/default.nix | 17 ++------ .../{hardware => }/hardware-configuration.nix | 4 -- hosts/desktop/modules/networking.nix | 22 ---------- hosts/desktop/modules/nix-helper.nix | 12 ------ hosts/thinkpad/modules/default.nix | 20 ++++----- hosts/thinkpad/modules/development.nix | 41 ------------------- hosts/thinkpad/modules/fonts.nix | 19 --------- hosts/thinkpad/modules/gaming/default.nix | 12 ------ hosts/thinkpad/modules/gaming/steam.nix | 8 ---- hosts/thinkpad/modules/gnome/default.nix | 28 ------------- hosts/thinkpad/modules/gnome/nautilus.nix | 15 ------- .../{hardware => }/hardware-configuration.nix | 0 hosts/thinkpad/modules/hardware/audio.nix | 33 --------------- hosts/thinkpad/modules/hardware/default.nix | 8 ---- .../modules/hardware/graphics/default.nix | 6 --- hosts/thinkpad/modules/hardware/keyboard.nix | 11 ----- hosts/thinkpad/modules/hyprland/default.nix | 25 ----------- hosts/thinkpad/modules/locale.nix | 37 ----------------- hosts/thinkpad/modules/qt.nix | 17 -------- hosts/thinkpad/modules/sddm.nix | 22 ---------- hosts/thinkpad/modules/security.nix | 25 +---------- hosts/thinkpad/modules/shell.nix | 19 --------- justfile | 4 +- shared/common.nix | 2 + shared/modules/default.nix | 17 ++++++++ .../modules/development/default.nix | 0 .../modules/development/docker.nix | 0 .../modules/development/dotnet.nix | 0 .../modules/development/nix.nix | 0 .../modules/development/node.nix | 0 .../modules/development/ollama.nix | 0 .../modules/development/rust.nix | 0 {hosts/desktop => shared}/modules/fonts.nix | 0 .../modules/gaming/default.nix | 0 .../modules/gaming/steam.nix | 0 .../modules/gnome/default.nix | 0 .../modules/gnome/nautilus.nix | 0 .../modules/hardware/audio.nix | 0 .../modules/hardware/default.nix | 1 - .../modules/hardware/graphics/default.nix | 0 .../modules/hardware/graphics/nvidia.nix | 9 +++- .../modules/hardware/keyboard.nix | 0 .../modules/hyprland/default.nix | 2 +- {hosts/desktop => shared}/modules/locale.nix | 0 .../modules/networking.nix | 4 +- .../modules/nix-helper.nix | 4 +- {hosts/desktop => shared}/modules/qt.nix | 0 {hosts/desktop => shared}/modules/sddm.nix | 0 .../desktop => shared}/modules/security.nix | 0 {hosts/desktop => shared}/modules/shell.nix | 0 51 files changed, 58 insertions(+), 406 deletions(-) rename hosts/desktop/modules/{hardware => }/hardware-configuration.nix (88%) delete mode 100644 hosts/desktop/modules/networking.nix delete mode 100644 hosts/desktop/modules/nix-helper.nix delete mode 100644 hosts/thinkpad/modules/development.nix delete mode 100644 hosts/thinkpad/modules/fonts.nix delete mode 100644 hosts/thinkpad/modules/gaming/default.nix delete mode 100644 hosts/thinkpad/modules/gaming/steam.nix delete mode 100644 hosts/thinkpad/modules/gnome/default.nix delete mode 100644 hosts/thinkpad/modules/gnome/nautilus.nix rename hosts/thinkpad/modules/{hardware => }/hardware-configuration.nix (100%) delete mode 100644 hosts/thinkpad/modules/hardware/audio.nix delete mode 100644 hosts/thinkpad/modules/hardware/default.nix delete mode 100644 hosts/thinkpad/modules/hardware/graphics/default.nix delete mode 100644 hosts/thinkpad/modules/hardware/keyboard.nix delete mode 100644 hosts/thinkpad/modules/hyprland/default.nix delete mode 100644 hosts/thinkpad/modules/locale.nix delete mode 100644 hosts/thinkpad/modules/qt.nix delete mode 100644 hosts/thinkpad/modules/sddm.nix delete mode 100644 hosts/thinkpad/modules/shell.nix create mode 100644 shared/modules/default.nix rename {hosts/desktop => shared}/modules/development/default.nix (100%) rename {hosts/desktop => shared}/modules/development/docker.nix (100%) rename {hosts/desktop => shared}/modules/development/dotnet.nix (100%) rename {hosts/desktop => shared}/modules/development/nix.nix (100%) rename {hosts/desktop => shared}/modules/development/node.nix (100%) rename {hosts/desktop => shared}/modules/development/ollama.nix (100%) rename {hosts/desktop => shared}/modules/development/rust.nix (100%) rename {hosts/desktop => shared}/modules/fonts.nix (100%) rename {hosts/desktop => shared}/modules/gaming/default.nix (100%) rename {hosts/desktop => shared}/modules/gaming/steam.nix (100%) rename {hosts/desktop => shared}/modules/gnome/default.nix (100%) rename {hosts/desktop => shared}/modules/gnome/nautilus.nix (100%) rename {hosts/desktop => shared}/modules/hardware/audio.nix (100%) rename {hosts/desktop => shared}/modules/hardware/default.nix (68%) rename {hosts/desktop => shared}/modules/hardware/graphics/default.nix (100%) rename {hosts/desktop => shared}/modules/hardware/graphics/nvidia.nix (90%) rename {hosts/desktop => shared}/modules/hardware/keyboard.nix (100%) rename {hosts/desktop => shared}/modules/hyprland/default.nix (84%) rename {hosts/desktop => shared}/modules/locale.nix (100%) rename {hosts/thinkpad => shared}/modules/networking.nix (90%) rename {hosts/thinkpad => shared}/modules/nix-helper.nix (81%) rename {hosts/desktop => shared}/modules/qt.nix (100%) rename {hosts/desktop => shared}/modules/sddm.nix (100%) rename {hosts/desktop => shared}/modules/security.nix (100%) rename {hosts/desktop => shared}/modules/shell.nix (100%) diff --git a/flake.nix b/flake.nix index 534c7e6..c35e792 100644 --- a/flake.nix +++ b/flake.nix @@ -80,6 +80,7 @@ { hostName = "desktop"; system = "x86_64-linux"; + nvidia.enable = true; } { hostName = "thinkpad"; @@ -88,7 +89,7 @@ { hostName = "pi4"; system = "aarch64-linux"; - enableWayland = false; + wayland.enable = false; } # TODO Homelab config ]; @@ -114,8 +115,13 @@ password = "temp"; }, version ? common.version, - enableWayland ? true, - }: + wayland ? { + enable = true; + }, + nvidia ? { + enable = false; + }, + }@systemConfig: # TODO only pass in systemConfig { name = hostName; @@ -128,9 +134,7 @@ common theme lib - hostName - version - enableWayland + systemConfig ; isDarwin = false; }; @@ -149,9 +153,7 @@ common theme libHm - hostName - version - enableWayland + systemConfig ; }; users.${user.name} = import ./hosts/${hostName}/home-manager; diff --git a/hosts/desktop/modules/default.nix b/hosts/desktop/modules/default.nix index 5999ba5..4b22dc7 100644 --- a/hosts/desktop/modules/default.nix +++ b/hosts/desktop/modules/default.nix @@ -1,17 +1,8 @@ +{ lib, ... }: + { imports = [ - ./development - ./fonts.nix - ./gaming - ./gnome - ./hardware - ./locale.nix - ./networking.nix - ./nix-helper.nix - ./hyprland - ./sddm.nix - ./security.nix - ./shell.nix - ./qt.nix + (lib.custom.relativeToRoot "shared/modules") + ./hardware-configuration.nix ]; } diff --git a/hosts/desktop/modules/hardware/hardware-configuration.nix b/hosts/desktop/modules/hardware-configuration.nix similarity index 88% rename from hosts/desktop/modules/hardware/hardware-configuration.nix rename to hosts/desktop/modules/hardware-configuration.nix index 53f0e81..b2745dc 100644 --- a/hosts/desktop/modules/hardware/hardware-configuration.nix +++ b/hosts/desktop/modules/hardware-configuration.nix @@ -1,10 +1,6 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. { config, lib, - pkgs, modulesPath, ... }: diff --git a/hosts/desktop/modules/networking.nix b/hosts/desktop/modules/networking.nix deleted file mode 100644 index cafa9fc..0000000 --- a/hosts/desktop/modules/networking.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ hostName, ... }: - -{ - networking = { - networkmanager.enable = true; - inherit hostName; - # wireless.enable = true; # Enables wireless support via wpa_supplicant. - }; - - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - programs.ssh.enableAskPassword = false; - - services.tailscale.enable = true; -} diff --git a/hosts/desktop/modules/nix-helper.nix b/hosts/desktop/modules/nix-helper.nix deleted file mode 100644 index f60cc0e..0000000 --- a/hosts/desktop/modules/nix-helper.nix +++ /dev/null @@ -1,12 +0,0 @@ -# Nix-Helper: github.com/viperML/nh -{ - programs.nh = { - enable = true; - flake = ../.; - clean = { - enable = true; - dates = "weekly"; - extraArgs = "--keep-since 30d"; - }; - }; -} diff --git a/hosts/thinkpad/modules/default.nix b/hosts/thinkpad/modules/default.nix index de7f5de..2069513 100644 --- a/hosts/thinkpad/modules/default.nix +++ b/hosts/thinkpad/modules/default.nix @@ -1,19 +1,15 @@ +{ pkgs, lib, ... }: + { imports = [ + (lib.custom.relativeToRoot "shared/modules") ./battery.nix ./bluetooth.nix - ./development.nix - ./fonts.nix - ./gaming - ./gnome - ./hardware - ./locale.nix - ./networking.nix - ./nix-helper.nix - ./hyprland - ./sddm.nix + ./hardware-configuration.nix ./security.nix - ./shell.nix - ./qt.nix + ]; + + environment.systemPackages = with pkgs; [ + hyprsunset # Blue light filter ]; } diff --git a/hosts/thinkpad/modules/development.nix b/hosts/thinkpad/modules/development.nix deleted file mode 100644 index d0cde6b..0000000 --- a/hosts/thinkpad/modules/development.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ pkgs, ... }: - -{ - environment.systemPackages = with pkgs; [ - # IDEs - jetbrains.rust-rover - jetbrains.webstorm - jetbrains.rider - vscodium # TODO set up extensions - # Tools - dotnet-sdk_9 - dotnet-aspnetcore_9 - git - rustup - nodejs_22 - pnpm - just - gcc # Required for C, Rust and others - # Language servers - nixd - nil - # Formatters - nixfmt-rfc-style - treefmt - nodePackages.prettier - shfmt - ]; - - virtualisation.docker = { - enable = true; - storageDriver = "btrfs"; - rootless = { - enable = true; - setSocketVariable = true; - }; - }; - - services.ollama = { - enable = true; - }; -} diff --git a/hosts/thinkpad/modules/fonts.nix b/hosts/thinkpad/modules/fonts.nix deleted file mode 100644 index 260486a..0000000 --- a/hosts/thinkpad/modules/fonts.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs, theme, ... }: - -{ - environment.systemPackages = with pkgs; [ - font-awesome # Icons - ]; - - fonts = { - fontconfig.enable = true; - packages = with pkgs; [ - (nerdfonts.override { fonts = [ theme.nerdFont ]; }) - jetbrains-mono - # The line below will replace the lines above in 25.05 - # nerd-fonts.jetbrains-mono - font-awesome - ]; - }; - -} diff --git a/hosts/thinkpad/modules/gaming/default.nix b/hosts/thinkpad/modules/gaming/default.nix deleted file mode 100644 index 79f3794..0000000 --- a/hosts/thinkpad/modules/gaming/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs, ... }: - -{ - imports = [ - ./steam.nix - ]; - - environment.systemPackages = with pkgs; [ - heroic - wine - ]; -} diff --git a/hosts/thinkpad/modules/gaming/steam.nix b/hosts/thinkpad/modules/gaming/steam.nix deleted file mode 100644 index 65035f8..0000000 --- a/hosts/thinkpad/modules/gaming/steam.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - programs.steam = { - enable = true; - remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play - dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server - localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers - }; -} diff --git a/hosts/thinkpad/modules/gnome/default.nix b/hosts/thinkpad/modules/gnome/default.nix deleted file mode 100644 index 0a39f32..0000000 --- a/hosts/thinkpad/modules/gnome/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ pkgs, ... }: - -{ - imports = [ - ./nautilus.nix - ]; - - environment.systemPackages = with pkgs; [ - # adw-gtk3 - glib - adwaita-icon-theme - gnomeExtensions.appindicator - # gnome-extension-manager - loupe - gnome-calculator - gnome-disk-utility - gnome-clocks - papers # PDFReader - ]; - - programs.dconf.enable = true; # Required for some gnome applications - - services = { - gnome.gnome-keyring.enable = true; - gvfs.enable = true; # Gnome Virtual File-system. Required for various things in nautilus - udev.packages = with pkgs; [ gnome-settings-daemon ]; - }; -} diff --git a/hosts/thinkpad/modules/gnome/nautilus.nix b/hosts/thinkpad/modules/gnome/nautilus.nix deleted file mode 100644 index 523bb95..0000000 --- a/hosts/thinkpad/modules/gnome/nautilus.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ pkgs, ... }: -let - common = import ../../common.nix; -in -{ - environment.systemPackages = with pkgs; [ - nautilus - ffmpegthumbnailer # Thumbnails - ]; - - programs.nautilus-open-any-terminal = { - enable = true; - terminal = common.default.terminal; - }; -} diff --git a/hosts/thinkpad/modules/hardware/hardware-configuration.nix b/hosts/thinkpad/modules/hardware-configuration.nix similarity index 100% rename from hosts/thinkpad/modules/hardware/hardware-configuration.nix rename to hosts/thinkpad/modules/hardware-configuration.nix diff --git a/hosts/thinkpad/modules/hardware/audio.nix b/hosts/thinkpad/modules/hardware/audio.nix deleted file mode 100644 index 2b3429e..0000000 --- a/hosts/thinkpad/modules/hardware/audio.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ pkgs, ... }: - -{ - environment.systemPackages = with pkgs; [ - gst_all_1.gstreamer - gst_all_1.gst-plugins-base - gst_all_1.gst-plugins-good - gst_all_1.gst-plugins-bad - - wireplumber - playerctl # Interaction with audioplayers and browsers - pavucontrol # GUI - spotify - ]; - - hardware.pulseaudio.enable = false; # Will be moved to services in 25.05 - - security.rtkit.enable = true; # Enable RealtimeKit for audio purposes - - services = { - pipewire = { - enable = true; - alsa = { - enable = true; - support32Bit = true; - }; - pulse.enable = true; - # Uncomment the following line if you want to use JACK applications - # jack.enable = true; - }; - # pulseaudio.enable = false; # TODO uncommenct at 25.05 - }; -} diff --git a/hosts/thinkpad/modules/hardware/default.nix b/hosts/thinkpad/modules/hardware/default.nix deleted file mode 100644 index ffd2b30..0000000 --- a/hosts/thinkpad/modules/hardware/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - imports = [ - ./audio.nix - ./graphics - ./hardware-configuration.nix - ./keyboard.nix - ]; -} diff --git a/hosts/thinkpad/modules/hardware/graphics/default.nix b/hosts/thinkpad/modules/hardware/graphics/default.nix deleted file mode 100644 index eaade71..0000000 --- a/hosts/thinkpad/modules/hardware/graphics/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ ]; - - # Enable OpenGL - hardware.graphics.enable = true; -} diff --git a/hosts/thinkpad/modules/hardware/keyboard.nix b/hosts/thinkpad/modules/hardware/keyboard.nix deleted file mode 100644 index 8840a94..0000000 --- a/hosts/thinkpad/modules/hardware/keyboard.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs, ... }: - -{ - environment.systemPackages = with pkgs; [ - via - ]; - - hardware.keyboard.qmk.enable = true; - - services.udev.packages = with pkgs; [ via ]; -} diff --git a/hosts/thinkpad/modules/hyprland/default.nix b/hosts/thinkpad/modules/hyprland/default.nix deleted file mode 100644 index 9e7c4a7..0000000 --- a/hosts/thinkpad/modules/hyprland/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -# System configurations for Hyprland. For home configs, see ./home-manager/hyprland -{ pkgs, ... }: - -{ - environment.systemPackages = with pkgs; [ - xdg-desktop-portal-hyprland - hyprpolkitagent # Auth deamon providing modals for password auth - hyprshot # Screenshots - hyprsunset # Blue light filter - unstable.hyprsysteminfo - unstable.hyprland-qtutils - unstable.hyprland-qt-support - ]; - - programs = { - hyprland = { - enable = true; - xwayland.enable = true; - withUWSM = true; - }; - hyprlock.enable = true; # Lock screen - }; - - services.hypridle.enable = true; # Lock when unused -} diff --git a/hosts/thinkpad/modules/locale.nix b/hosts/thinkpad/modules/locale.nix deleted file mode 100644 index 08677ca..0000000 --- a/hosts/thinkpad/modules/locale.nix +++ /dev/null @@ -1,37 +0,0 @@ -# TODO move locale config for hyprland here -let - utf-8 = "UTF-8"; - en = "en_GB.${utf-8}"; - nb = "nb_NO.${utf-8}"; - common = import ../common.nix; -in -{ - # Configure console keymap - console.keyMap = "uk"; - - # Select internationalisation properties. - i18n = { - defaultLocale = en; - supportedLocales = [ - "${en}/${utf-8}" - "${nb}/${utf-8}" - ]; - extraLocaleSettings = { - LC_ADDRESS = nb; - LC_IDENTIFICATION = nb; - LC_MEASUREMENT = nb; - LC_MONETARY = nb; - LC_NAME = nb; - LC_NUMERIC = nb; - LC_PAPER = nb; - LC_TELEPHONE = nb; - LC_TIME = nb; - }; - }; - - # Configure keymaps - services.xserver.xkb = common.keymaps; - - # Set your time zone. - time.timeZone = "Europe/Oslo"; -} diff --git a/hosts/thinkpad/modules/qt.nix b/hosts/thinkpad/modules/qt.nix deleted file mode 100644 index 789cb01..0000000 --- a/hosts/thinkpad/modules/qt.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ pkgs, ... }: - -{ - environment = { - sessionVariables = { - QT_QPA_PLATFORMTHEME = "qt6ct"; - QT_QPA_PLATFORM = "wayland"; # Enable Wayland for QT - }; - systemPackages = with pkgs.kdePackages; [ - qtwayland - qtsvg - qt6ct - ]; - }; - - qt.enable = true; -} diff --git a/hosts/thinkpad/modules/sddm.nix b/hosts/thinkpad/modules/sddm.nix deleted file mode 100644 index f481f12..0000000 --- a/hosts/thinkpad/modules/sddm.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ pkgs, theme, ... }: -let - flavor = theme.flavor; -in -{ - environment.systemPackages = with pkgs; [ - (catppuccin-sddm.override { - flavor = flavor; - font = theme.nerdFont; - fontSize = "9"; - background = "${../wallpapers/catppuccin_high.png}"; - loginBackground = true; - }) - ]; - - services.displayManager.sddm = { - enable = true; - theme = "catppuccin-${flavor}"; - wayland.enable = true; - package = pkgs.kdePackages.sddm; - }; -} diff --git a/hosts/thinkpad/modules/security.nix b/hosts/thinkpad/modules/security.nix index ea466d7..bcfc93a 100644 --- a/hosts/thinkpad/modules/security.nix +++ b/hosts/thinkpad/modules/security.nix @@ -1,13 +1,6 @@ { pkgs, ... }: { - environment.systemPackages = with pkgs; [ - gnupg - yubioath-flutter - ]; - - programs.gnupg.agent.enable = true; - security = { pam = { services = { @@ -28,18 +21,7 @@ session include login session optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start ''; - login = { - fprintAuth = false; - u2fAuth = false; # U2F and password - }; - sudo.u2fAuth = true; # U2F or password - }; - u2f = { - enable = true; - settings = { - cue = true; # Prompt: Please touch the device - interactive = false; # Prompt: Insert your U2F device, then press ENTER. - }; + login.fprintAuth = false; }; }; }; @@ -60,9 +42,4 @@ # services.fprintd.package = pkgs.fprintd.override { # libfprint = pkgs.libfprint-focaltech-2808-a658; # }; - - services = { - pcscd.enable = true; # Required for Yubikey - udev.packages = with pkgs; [ yubikey-personalization ]; - }; } diff --git a/hosts/thinkpad/modules/shell.nix b/hosts/thinkpad/modules/shell.nix deleted file mode 100644 index 84b5931..0000000 --- a/hosts/thinkpad/modules/shell.nix +++ /dev/null @@ -1,19 +0,0 @@ -# For Fish dotfiles, see: /home-manager/fish.nix -{ pkgs, ... }: - -{ - programs = { - bash = { - # Starts the OS using Bash, then starts fish if it's not running - interactiveShellInit = '' - if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] - then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" - exec ${pkgs.fish}/bin/fish $LOGIN_OPTION - fi - ''; - }; - - fish.enable = true; - }; -} diff --git a/justfile b/justfile index b14eadc..a654adf 100644 --- a/justfile +++ b/justfile @@ -5,13 +5,13 @@ fmt: treefmt --on-unmatched info test *FLAGS: - just fmt git add . + just fmt nh os test . {{FLAGS}} switch *FLAGS: - just fmt git add . + just fmt nh os switch . {{FLAGS}} switch-now *FLAGS: diff --git a/shared/common.nix b/shared/common.nix index 94596a2..a6e4485 100644 --- a/shared/common.nix +++ b/shared/common.nix @@ -24,6 +24,8 @@ rec { username = "martin"; + root = ../.; + # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It's perfectly fine and recommended to leave diff --git a/shared/modules/default.nix b/shared/modules/default.nix new file mode 100644 index 0000000..5999ba5 --- /dev/null +++ b/shared/modules/default.nix @@ -0,0 +1,17 @@ +{ + imports = [ + ./development + ./fonts.nix + ./gaming + ./gnome + ./hardware + ./locale.nix + ./networking.nix + ./nix-helper.nix + ./hyprland + ./sddm.nix + ./security.nix + ./shell.nix + ./qt.nix + ]; +} diff --git a/hosts/desktop/modules/development/default.nix b/shared/modules/development/default.nix similarity index 100% rename from hosts/desktop/modules/development/default.nix rename to shared/modules/development/default.nix diff --git a/hosts/desktop/modules/development/docker.nix b/shared/modules/development/docker.nix similarity index 100% rename from hosts/desktop/modules/development/docker.nix rename to shared/modules/development/docker.nix diff --git a/hosts/desktop/modules/development/dotnet.nix b/shared/modules/development/dotnet.nix similarity index 100% rename from hosts/desktop/modules/development/dotnet.nix rename to shared/modules/development/dotnet.nix diff --git a/hosts/desktop/modules/development/nix.nix b/shared/modules/development/nix.nix similarity index 100% rename from hosts/desktop/modules/development/nix.nix rename to shared/modules/development/nix.nix diff --git a/hosts/desktop/modules/development/node.nix b/shared/modules/development/node.nix similarity index 100% rename from hosts/desktop/modules/development/node.nix rename to shared/modules/development/node.nix diff --git a/hosts/desktop/modules/development/ollama.nix b/shared/modules/development/ollama.nix similarity index 100% rename from hosts/desktop/modules/development/ollama.nix rename to shared/modules/development/ollama.nix diff --git a/hosts/desktop/modules/development/rust.nix b/shared/modules/development/rust.nix similarity index 100% rename from hosts/desktop/modules/development/rust.nix rename to shared/modules/development/rust.nix diff --git a/hosts/desktop/modules/fonts.nix b/shared/modules/fonts.nix similarity index 100% rename from hosts/desktop/modules/fonts.nix rename to shared/modules/fonts.nix diff --git a/hosts/desktop/modules/gaming/default.nix b/shared/modules/gaming/default.nix similarity index 100% rename from hosts/desktop/modules/gaming/default.nix rename to shared/modules/gaming/default.nix diff --git a/hosts/desktop/modules/gaming/steam.nix b/shared/modules/gaming/steam.nix similarity index 100% rename from hosts/desktop/modules/gaming/steam.nix rename to shared/modules/gaming/steam.nix diff --git a/hosts/desktop/modules/gnome/default.nix b/shared/modules/gnome/default.nix similarity index 100% rename from hosts/desktop/modules/gnome/default.nix rename to shared/modules/gnome/default.nix diff --git a/hosts/desktop/modules/gnome/nautilus.nix b/shared/modules/gnome/nautilus.nix similarity index 100% rename from hosts/desktop/modules/gnome/nautilus.nix rename to shared/modules/gnome/nautilus.nix diff --git a/hosts/desktop/modules/hardware/audio.nix b/shared/modules/hardware/audio.nix similarity index 100% rename from hosts/desktop/modules/hardware/audio.nix rename to shared/modules/hardware/audio.nix diff --git a/hosts/desktop/modules/hardware/default.nix b/shared/modules/hardware/default.nix similarity index 68% rename from hosts/desktop/modules/hardware/default.nix rename to shared/modules/hardware/default.nix index ffd2b30..aac2e08 100644 --- a/hosts/desktop/modules/hardware/default.nix +++ b/shared/modules/hardware/default.nix @@ -2,7 +2,6 @@ imports = [ ./audio.nix ./graphics - ./hardware-configuration.nix ./keyboard.nix ]; } diff --git a/hosts/desktop/modules/hardware/graphics/default.nix b/shared/modules/hardware/graphics/default.nix similarity index 100% rename from hosts/desktop/modules/hardware/graphics/default.nix rename to shared/modules/hardware/graphics/default.nix diff --git a/hosts/desktop/modules/hardware/graphics/nvidia.nix b/shared/modules/hardware/graphics/nvidia.nix similarity index 90% rename from hosts/desktop/modules/hardware/graphics/nvidia.nix rename to shared/modules/hardware/graphics/nvidia.nix index 6b33ac2..5b30c84 100644 --- a/hosts/desktop/modules/hardware/graphics/nvidia.nix +++ b/shared/modules/hardware/graphics/nvidia.nix @@ -1,6 +1,11 @@ -{ pkgs, ... }: - { + pkgs, + lib, + systemConfig, + ... +}: + +lib.mkIf systemConfig.nvidia.enable { boot.kernelParams = [ "nvidia.NVreg_PreserveVideoMemoryAllocations=1" ]; # For hardware acceleration diff --git a/hosts/desktop/modules/hardware/keyboard.nix b/shared/modules/hardware/keyboard.nix similarity index 100% rename from hosts/desktop/modules/hardware/keyboard.nix rename to shared/modules/hardware/keyboard.nix diff --git a/hosts/desktop/modules/hyprland/default.nix b/shared/modules/hyprland/default.nix similarity index 84% rename from hosts/desktop/modules/hyprland/default.nix rename to shared/modules/hyprland/default.nix index 3a79323..8cb2c9e 100644 --- a/hosts/desktop/modules/hyprland/default.nix +++ b/shared/modules/hyprland/default.nix @@ -1,4 +1,4 @@ -# System configurations for Hyprland. For home configs, see ./home-manager/hyprland +# System configurations for Hyprland. For home configs, see ./shared/home-manager/hyprland { pkgs, ... }: { diff --git a/hosts/desktop/modules/locale.nix b/shared/modules/locale.nix similarity index 100% rename from hosts/desktop/modules/locale.nix rename to shared/modules/locale.nix diff --git a/hosts/thinkpad/modules/networking.nix b/shared/modules/networking.nix similarity index 90% rename from hosts/thinkpad/modules/networking.nix rename to shared/modules/networking.nix index cafa9fc..7ac233a 100644 --- a/hosts/thinkpad/modules/networking.nix +++ b/shared/modules/networking.nix @@ -1,9 +1,9 @@ -{ hostName, ... }: +{ systemConfig, ... }: { networking = { networkmanager.enable = true; - inherit hostName; + hostName = systemConfig.hostName; # wireless.enable = true; # Enables wireless support via wpa_supplicant. }; diff --git a/hosts/thinkpad/modules/nix-helper.nix b/shared/modules/nix-helper.nix similarity index 81% rename from hosts/thinkpad/modules/nix-helper.nix rename to shared/modules/nix-helper.nix index f60cc0e..ba8c01b 100644 --- a/hosts/thinkpad/modules/nix-helper.nix +++ b/shared/modules/nix-helper.nix @@ -1,8 +1,10 @@ # Nix-Helper: github.com/viperML/nh +{ common, ... }: + { programs.nh = { enable = true; - flake = ../.; + flake = common.root; clean = { enable = true; dates = "weekly"; diff --git a/hosts/desktop/modules/qt.nix b/shared/modules/qt.nix similarity index 100% rename from hosts/desktop/modules/qt.nix rename to shared/modules/qt.nix diff --git a/hosts/desktop/modules/sddm.nix b/shared/modules/sddm.nix similarity index 100% rename from hosts/desktop/modules/sddm.nix rename to shared/modules/sddm.nix diff --git a/hosts/desktop/modules/security.nix b/shared/modules/security.nix similarity index 100% rename from hosts/desktop/modules/security.nix rename to shared/modules/security.nix diff --git a/hosts/desktop/modules/shell.nix b/shared/modules/shell.nix similarity index 100% rename from hosts/desktop/modules/shell.nix rename to shared/modules/shell.nix -- 2.47.2 From 16c4a8f46bcfb5c87e52cba472f5afb2f815298b Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Tue, 15 Apr 2025 12:48:27 +0200 Subject: [PATCH 10/15] :sparkles: Split up config files to multiple and added imports. Fixed default values for systemConfigs --- flake.nix | 35 +++++----- hosts/desktop/default.nix | 67 ++---------------- .../{modules => }/hardware-configuration.nix | 0 hosts/desktop/modules/default.nix | 8 --- hosts/thinkpad/{modules => }/battery.nix | 0 hosts/thinkpad/{modules => }/bluetooth.nix | 0 hosts/thinkpad/default.nix | 69 +++---------------- .../{modules => }/hardware-configuration.nix | 0 hosts/thinkpad/modules/default.nix | 15 ---- hosts/thinkpad/{modules => }/security.nix | 0 shared/modules/boot.nix | 6 ++ shared/modules/default.nix | 11 +++ shared/modules/electron.nix | 8 +++ shared/modules/kdeconnect.nix | 3 + shared/modules/mail.nix | 7 ++ shared/modules/media.nix | 11 +++ shared/modules/networking.nix | 6 +- shared/modules/nixos.nix | 25 +++++++ shared/modules/office.nix | 7 ++ shared/modules/social.nix | 7 ++ shared/modules/users.nix | 15 ++++ shared/modules/xdg.nix | 9 +++ shared/modules/xserver.nix | 3 + 23 files changed, 149 insertions(+), 163 deletions(-) rename hosts/desktop/{modules => }/hardware-configuration.nix (100%) delete mode 100644 hosts/desktop/modules/default.nix rename hosts/thinkpad/{modules => }/battery.nix (100%) rename hosts/thinkpad/{modules => }/bluetooth.nix (100%) rename hosts/thinkpad/{modules => }/hardware-configuration.nix (100%) delete mode 100644 hosts/thinkpad/modules/default.nix rename hosts/thinkpad/{modules => }/security.nix (100%) create mode 100644 shared/modules/boot.nix create mode 100644 shared/modules/electron.nix create mode 100644 shared/modules/kdeconnect.nix create mode 100644 shared/modules/mail.nix create mode 100644 shared/modules/media.nix create mode 100644 shared/modules/nixos.nix create mode 100644 shared/modules/office.nix create mode 100644 shared/modules/social.nix create mode 100644 shared/modules/users.nix create mode 100644 shared/modules/xdg.nix create mode 100644 shared/modules/xserver.nix diff --git a/flake.nix b/flake.nix index c35e792..c6602de 100644 --- a/flake.nix +++ b/flake.nix @@ -23,10 +23,10 @@ # ========= Utilities ========= # # Secrets management - sops-nix = { - url = "github:mic92/sops-nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + # sops-nix = { + # url = "github:mic92/sops-nix"; + # inputs.nixpkgs.follows = "nixpkgs"; + # }; # Catppuccin theming catppuccin = { url = "github:catppuccin/nix"; @@ -76,7 +76,7 @@ lib = nixpkgs.lib.extend customLib; libHm = home-manager.lib.extend customLib; - systems = [ + systems = builtins.map (config: defaultAttrs // config) [ { hostName = "desktop"; system = "x86_64-linux"; @@ -94,6 +94,16 @@ # TODO Homelab config ]; + defaultAttrs = { + user = { + name = common.username; + password = "temp"; + }; + version = common.system.version; + wayland.enable = true; + nvidia.enable = false; + }; + in { # @@ -110,18 +120,9 @@ { hostName, system, - user ? { - name = common.username; - password = "temp"; - }, - version ? common.version, - wayland ? { - enable = true; - }, - nvidia ? { - enable = false; - }, - }@systemConfig: # TODO only pass in systemConfig + user, + ... + }@systemConfig: { name = hostName; diff --git a/hosts/desktop/default.nix b/hosts/desktop/default.nix index ef3c46f..26e06e8 100644 --- a/hosts/desktop/default.nix +++ b/hosts/desktop/default.nix @@ -1,70 +1,11 @@ { - pkgs, - inputs, - outputs, - common, + lib, ... }: { - imports = [ ./modules ]; - - nixpkgs.overlays = [ outputs.overlays.unstable-packages ]; - - # Bootloader. - boot.loader = { - systemd-boot.enable = true; - efi.canTouchEfiVariables = true; - }; - - # Define a user account. Don't forget to set a password with 'passwd'. - users.users.${common.username} = { - isNormalUser = true; - description = common.username; - extraGroups = [ - "networkmanager" - "wheel" - ]; - }; - - # Allow unfree packages - nixpkgs.config.allowUnfree = true; - - environment.sessionVariables = { - # Tells Electron apps to use Wayland - NIXOS_OZONE_WL = "1"; - }; - - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - wget - xdg-utils - xdg-desktop-portal - xdg-desktop-portal-gtk - unstable.protonmail-desktop - stremio - fastfetch - discord - nix-prefetch-github # Cmd to get rev and hash from GitHub - gimp - vlc - vdhcoapp # TODO run "vdhcoapp install" on startup - onlyoffice-desktopeditors - inputs.grayjay.packages.${system}.grayjay + imports = [ + (lib.custom.relativeToRoot "shared/modules") + ./hardware-configuration.nix ]; - - nix.settings.experimental-features = [ - "nix-command" - "flakes" - ]; - - programs.kdeconnect.enable = true; - - services = { - flatpak.enable = false; - xserver.enable = true; - }; - - system.stateVersion = common.system.version; } diff --git a/hosts/desktop/modules/hardware-configuration.nix b/hosts/desktop/hardware-configuration.nix similarity index 100% rename from hosts/desktop/modules/hardware-configuration.nix rename to hosts/desktop/hardware-configuration.nix diff --git a/hosts/desktop/modules/default.nix b/hosts/desktop/modules/default.nix deleted file mode 100644 index 4b22dc7..0000000 --- a/hosts/desktop/modules/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ lib, ... }: - -{ - imports = [ - (lib.custom.relativeToRoot "shared/modules") - ./hardware-configuration.nix - ]; -} diff --git a/hosts/thinkpad/modules/battery.nix b/hosts/thinkpad/battery.nix similarity index 100% rename from hosts/thinkpad/modules/battery.nix rename to hosts/thinkpad/battery.nix diff --git a/hosts/thinkpad/modules/bluetooth.nix b/hosts/thinkpad/bluetooth.nix similarity index 100% rename from hosts/thinkpad/modules/bluetooth.nix rename to hosts/thinkpad/bluetooth.nix diff --git a/hosts/thinkpad/default.nix b/hosts/thinkpad/default.nix index 682f4b1..48dd47b 100644 --- a/hosts/thinkpad/default.nix +++ b/hosts/thinkpad/default.nix @@ -1,72 +1,23 @@ { pkgs, - outputs, - common, + lib, ... }: { - imports = [ ./modules ]; + imports = [ + (lib.custom.relativeToRoot "shared/modules") + ./battery.nix + ./bluetooth.nix + ./hardware-configuration.nix + ./security.nix + ]; - nixpkgs.overlays = [ outputs.overlays.unstable-packages ]; + boot.kernelPackages = pkgs.linuxPackages_latest; - # Bootloader. - boot = { - kernelPackages = pkgs.linuxPackages_latest; - loader = { - systemd-boot.enable = true; - efi.canTouchEfiVariables = true; - }; - }; - - # Define a user account. Don't forget to set a password with 'passwd'. - users.users.${common.username} = { - isNormalUser = true; - description = common.username; - extraGroups = [ - "networkmanager" - "wheel" - ]; - }; - - # Allow unfree packages - nixpkgs.config.allowUnfree = true; - - environment.sessionVariables = { - # Tells Electron apps to use Wayland - NIXOS_OZONE_WL = "1"; - }; - - # List packages installed in system profile. To search, run: - # $ nix search wget environment.systemPackages = with pkgs; [ brightnessctl - wget - xdg-utils - xdg-desktop-portal - xdg-desktop-portal-gtk - unstable.protonmail-desktop - stremio - fastfetch - discord - nix-prefetch-github # Cmd to get rev and hash from GitHub - gimp - vlc - vdhcoapp - onlyoffice-desktopeditors + hyprsunset # Blue light filter ]; - nix.settings.experimental-features = [ - "nix-command" - "flakes" - ]; - - programs.kdeconnect.enable = true; - - services = { - flatpak.enable = false; - xserver.enable = true; - }; - - system.stateVersion = common.system.version; } diff --git a/hosts/thinkpad/modules/hardware-configuration.nix b/hosts/thinkpad/hardware-configuration.nix similarity index 100% rename from hosts/thinkpad/modules/hardware-configuration.nix rename to hosts/thinkpad/hardware-configuration.nix diff --git a/hosts/thinkpad/modules/default.nix b/hosts/thinkpad/modules/default.nix deleted file mode 100644 index 2069513..0000000 --- a/hosts/thinkpad/modules/default.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ pkgs, lib, ... }: - -{ - imports = [ - (lib.custom.relativeToRoot "shared/modules") - ./battery.nix - ./bluetooth.nix - ./hardware-configuration.nix - ./security.nix - ]; - - environment.systemPackages = with pkgs; [ - hyprsunset # Blue light filter - ]; -} diff --git a/hosts/thinkpad/modules/security.nix b/hosts/thinkpad/security.nix similarity index 100% rename from hosts/thinkpad/modules/security.nix rename to hosts/thinkpad/security.nix diff --git a/shared/modules/boot.nix b/shared/modules/boot.nix new file mode 100644 index 0000000..fca6970 --- /dev/null +++ b/shared/modules/boot.nix @@ -0,0 +1,6 @@ +{ + boot.loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; +} diff --git a/shared/modules/default.nix b/shared/modules/default.nix index 5999ba5..c9e72c8 100644 --- a/shared/modules/default.nix +++ b/shared/modules/default.nix @@ -1,17 +1,28 @@ { imports = [ + ./boot.nix ./development + ./electron.nix ./fonts.nix ./gaming ./gnome ./hardware + ./kdeconnect.nix ./locale.nix + ./mail.nix + ./media.nix ./networking.nix + ./nixos.nix ./nix-helper.nix + ./office.nix ./hyprland ./sddm.nix ./security.nix ./shell.nix + ./social.nix + ./users.nix ./qt.nix + ./xdg.nix + ./xserver.nix ]; } diff --git a/shared/modules/electron.nix b/shared/modules/electron.nix new file mode 100644 index 0000000..b76341d --- /dev/null +++ b/shared/modules/electron.nix @@ -0,0 +1,8 @@ +{ lib, systemConfig, ... }: + +{ + environment.sessionVariables = lib.mkIf systemConfig.wayland.enable { + # Tells Electron apps to use Wayland + NIXOS_OZONE_WL = "1"; + }; +} diff --git a/shared/modules/kdeconnect.nix b/shared/modules/kdeconnect.nix new file mode 100644 index 0000000..0cb7c87 --- /dev/null +++ b/shared/modules/kdeconnect.nix @@ -0,0 +1,3 @@ +{ + programs.kdeconnect.enable = true; +} diff --git a/shared/modules/mail.nix b/shared/modules/mail.nix new file mode 100644 index 0000000..ce75156 --- /dev/null +++ b/shared/modules/mail.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + unstable.protonmail-desktop + ]; +} diff --git a/shared/modules/media.nix b/shared/modules/media.nix new file mode 100644 index 0000000..3cd7107 --- /dev/null +++ b/shared/modules/media.nix @@ -0,0 +1,11 @@ +{ pkgs, inputs, ... }: + +{ + environment.systemPackages = with pkgs; [ + stremio + gimp + vlc + vdhcoapp + inputs.grayjay.packages.${system}.grayjay + ]; +} diff --git a/shared/modules/networking.nix b/shared/modules/networking.nix index 7ac233a..4e79445 100644 --- a/shared/modules/networking.nix +++ b/shared/modules/networking.nix @@ -1,6 +1,10 @@ -{ systemConfig, ... }: +{ pkgs, systemConfig, ... }: { + environment.systemPackages = with pkgs; [ + wget + ]; + networking = { networkmanager.enable = true; hostName = systemConfig.hostName; diff --git a/shared/modules/nixos.nix b/shared/modules/nixos.nix new file mode 100644 index 0000000..2bb4930 --- /dev/null +++ b/shared/modules/nixos.nix @@ -0,0 +1,25 @@ +{ + pkgs, + outputs, + systemConfig, + ... +}: + +{ + environment.systemPackages = with pkgs; [ + nix-prefetch-github # Cmd to get rev and hash from GitHub + ]; + + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + nixpkgs = { + # Allow unfree packages + config.allowUnfree = true; + overlays = [ outputs.overlays.unstable-packages ]; + }; + + system.stateVersion = systemConfig.version; +} diff --git a/shared/modules/office.nix b/shared/modules/office.nix new file mode 100644 index 0000000..59dec77 --- /dev/null +++ b/shared/modules/office.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + onlyoffice-desktopeditors + ]; +} diff --git a/shared/modules/social.nix b/shared/modules/social.nix new file mode 100644 index 0000000..26fb62a --- /dev/null +++ b/shared/modules/social.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + discord + ]; +} diff --git a/shared/modules/users.nix b/shared/modules/users.nix new file mode 100644 index 0000000..0fce21a --- /dev/null +++ b/shared/modules/users.nix @@ -0,0 +1,15 @@ +{ systemConfig, ... }: +let + username = systemConfig.user.name; +in +{ + # Define a user without a password, TODO pass in user.password + users.users.${username} = { + isNormalUser = true; + description = username; + extraGroups = [ + "networkmanager" + "wheel" + ]; + }; +} diff --git a/shared/modules/xdg.nix b/shared/modules/xdg.nix new file mode 100644 index 0000000..24b511f --- /dev/null +++ b/shared/modules/xdg.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + xdg-utils + xdg-desktop-portal + xdg-desktop-portal-gtk + ]; +} diff --git a/shared/modules/xserver.nix b/shared/modules/xserver.nix new file mode 100644 index 0000000..1d78081 --- /dev/null +++ b/shared/modules/xserver.nix @@ -0,0 +1,3 @@ +{ + services.xserver.enable = true; +} -- 2.47.2 From 0474fd9802890e10cc73e743cf7987004e2279a6 Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Tue, 15 Apr 2025 12:58:35 +0200 Subject: [PATCH 11/15] :sparkles: Moved yubikey config to security dir and rename --- flake.lock | 21 ------------------- shared/modules/default.nix | 2 +- shared/modules/security/default.nix | 5 +++++ .../{security.nix => security/yubikey.nix} | 3 ++- 4 files changed, 8 insertions(+), 23 deletions(-) create mode 100644 shared/modules/security/default.nix rename shared/modules/{security.nix => security/yubikey.nix} (88%) diff --git a/flake.lock b/flake.lock index 7ab72e3..d3eca85 100644 --- a/flake.lock +++ b/flake.lock @@ -509,31 +509,10 @@ "nixpkgs-stable": "nixpkgs-stable", "nixpkgs-unstable": "nixpkgs-unstable", "nixvim": "nixvim", - "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix", "zen-browser": "zen-browser" } }, - "sops-nix": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1744103455, - "narHash": "sha256-SR6+qjkPjGQG+8eM4dCcVtss8r9bre/LAxFMPJpaZeU=", - "owner": "mic92", - "repo": "sops-nix", - "rev": "69d5a5a4635c27dae5a742f36108beccc506c1ba", - "type": "github" - }, - "original": { - "owner": "mic92", - "repo": "sops-nix", - "type": "github" - } - }, "spicetify-nix": { "inputs": { "nixpkgs": [ diff --git a/shared/modules/default.nix b/shared/modules/default.nix index c9e72c8..c9f43ed 100644 --- a/shared/modules/default.nix +++ b/shared/modules/default.nix @@ -17,7 +17,7 @@ ./office.nix ./hyprland ./sddm.nix - ./security.nix + ./security ./shell.nix ./social.nix ./users.nix diff --git a/shared/modules/security/default.nix b/shared/modules/security/default.nix new file mode 100644 index 0000000..4fdd9fd --- /dev/null +++ b/shared/modules/security/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./yubikey.nix + ]; +} diff --git a/shared/modules/security.nix b/shared/modules/security/yubikey.nix similarity index 88% rename from shared/modules/security.nix rename to shared/modules/security/yubikey.nix index f050539..900d5b4 100644 --- a/shared/modules/security.nix +++ b/shared/modules/security/yubikey.nix @@ -1,9 +1,10 @@ +# Yubikey config: https://nixos.wiki/wiki/Yubikey#pam_u2f { pkgs, ... }: { environment.systemPackages = with pkgs; [ gnupg - yubioath-flutter + yubioath-flutter # GUI ]; programs.gnupg.agent.enable = true; -- 2.47.2 From 980334b44babe18ee690b8cde6c4c924792e802b Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Tue, 15 Apr 2025 13:01:20 +0200 Subject: [PATCH 12/15] :sparkles: Prefer rebase when pulling from git --- shared/home-manager/development/git.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/shared/home-manager/development/git.nix b/shared/home-manager/development/git.nix index 3381dc8..53e4d91 100644 --- a/shared/home-manager/development/git.nix +++ b/shared/home-manager/development/git.nix @@ -23,6 +23,7 @@ signing.signByDefault = true; extraConfig = { + pull.rebase = true; push.autoSetupRemote = true; safe.directory = "/etc/nixos"; credential.helper = "${package}/bin/git-credential-libsecret"; -- 2.47.2 From 4a884f5e6e189b9fa6ea0b712d5fd721fd777d4f Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Tue, 15 Apr 2025 17:48:57 +0200 Subject: [PATCH 13/15] :sparkles: Monitor specific configs in hosts --- hosts/desktop/common.nix | 4 +++ hosts/desktop/home-manager/default.nix | 2 ++ hosts/desktop/home-manager/hyprpaper.nix | 29 +++++++++++++++++++ hosts/desktop/home-manager/settings.nix | 12 ++++++++ hosts/thinkpad/common.nix | 25 ++-------------- .../home-manager/hyprland/hyprpaper.nix | 23 --------------- .../home-manager/hyprland/settings.nix | 11 ++++--- shared/common.nix | 4 --- shared/home-manager/hyprland/default.nix | 2 +- shared/home-manager/hyprland/hyprpaper.nix | 10 ++----- shared/home-manager/hyprland/settings.nix | 3 +- shared/theme.nix | 3 +- 12 files changed, 63 insertions(+), 65 deletions(-) create mode 100644 hosts/desktop/common.nix create mode 100644 hosts/desktop/home-manager/hyprpaper.nix create mode 100644 hosts/desktop/home-manager/settings.nix delete mode 100644 hosts/thinkpad/home-manager/hyprland/hyprpaper.nix diff --git a/hosts/desktop/common.nix b/hosts/desktop/common.nix new file mode 100644 index 0000000..8319455 --- /dev/null +++ b/hosts/desktop/common.nix @@ -0,0 +1,4 @@ +{ + monitor1 = "DP-1"; + monitor2 = "DP-3"; +} diff --git a/hosts/desktop/home-manager/default.nix b/hosts/desktop/home-manager/default.nix index f3ff403..510a6a6 100644 --- a/hosts/desktop/home-manager/default.nix +++ b/hosts/desktop/home-manager/default.nix @@ -6,6 +6,8 @@ { imports = [ (lib.custom.relativeToRoot "shared/home-manager") + ./hyprpaper.nix + ./settings.nix ]; programs.git.signing.key = "706F53DD087A91DE"; diff --git a/hosts/desktop/home-manager/hyprpaper.nix b/hosts/desktop/home-manager/hyprpaper.nix new file mode 100644 index 0000000..d045fee --- /dev/null +++ b/hosts/desktop/home-manager/hyprpaper.nix @@ -0,0 +1,29 @@ +# Wallpapers +{ + lib, + theme, + ... +}: + +{ + services.hyprpaper.settings = + let + wallpaper1 = builtins.toString theme.wallpaper.monitor1; + wallpaper2 = builtins.toString theme.wallpaper.monitor2; + in + { + preload = lib.mkDefault [ + wallpaper1 + wallpaper2 + ]; + + wallpaper = + let + common = import ../common.nix; + in + lib.mkDefault [ + "${common.monitor1},${wallpaper1}" + "${common.monitor2},${wallpaper2}" + ]; + }; +} diff --git a/hosts/desktop/home-manager/settings.nix b/hosts/desktop/home-manager/settings.nix new file mode 100644 index 0000000..3ba5c23 --- /dev/null +++ b/hosts/desktop/home-manager/settings.nix @@ -0,0 +1,12 @@ +{ lib, ... }: + +{ + wayland.windowManager.hyprland.settings.monitor = + let + common = import ../common.nix; + in + lib.mkForce [ + "${common.monitor1}, 3440x1440@175, 0x0, 1" + "${common.monitor2}, 3840x2160@60, 3440x0, 1.5, transform, 1" + ]; +} diff --git a/hosts/thinkpad/common.nix b/hosts/thinkpad/common.nix index a2fd81c..f27b268 100644 --- a/hosts/thinkpad/common.nix +++ b/hosts/thinkpad/common.nix @@ -1,25 +1,4 @@ -rec { - default = { - browser = "zen"; - calculator = "gnome-calculator"; - fileManager = "nautilus"; - imageViewer = "loupe"; - lockScreen = "hyprlock"; - terminal = "kitty"; - }; - - dir = { - home = "/home/${username}"; - pictures = "${dir.home}/Pictures"; - }; - - keymaps = { - layout = "gb,no"; - options = "grp:alt_shift_toggle"; # Toggle using ALT + SHIFT - }; - - # Empty matches all +{ + # Empty matches all monitors monitor1 = ""; - - username = "martin"; } diff --git a/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix b/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix deleted file mode 100644 index 75f058a..0000000 --- a/hosts/thinkpad/home-manager/hyprland/hyprpaper.nix +++ /dev/null @@ -1,23 +0,0 @@ -# Wallpapers -{ - lib, - theme, - common, - ... -}: - -{ - services.hyprpaper.settings = - let - monitor1 = builtins.toString theme.wallpaper.monitor1; - in - { - preload = lib.mkDefault [ - monitor1 - ]; - - wallpaper = lib.mkDefault [ - "${common.monitor1},${monitor1}" - ]; - }; -} diff --git a/hosts/thinkpad/home-manager/hyprland/settings.nix b/hosts/thinkpad/home-manager/hyprland/settings.nix index 0c5c79a..42826ba 100644 --- a/hosts/thinkpad/home-manager/hyprland/settings.nix +++ b/hosts/thinkpad/home-manager/hyprland/settings.nix @@ -1,14 +1,17 @@ { lib, - common, ... }: { wayland.windowManager.hyprland.settings = { - monitor = lib.mkDefault [ - "${common.monitor1}, 1920x1080@60.05, 0x0, 1" - ]; + monitor = + let + common = import ../common.nix; + in + lib.mkForce [ + "${common.monitor1}, 1920x1080@60.05, 0x0, 1" + ]; # Autostart exec-once = [ diff --git a/shared/common.nix b/shared/common.nix index a6e4485..5de9181 100644 --- a/shared/common.nix +++ b/shared/common.nix @@ -18,10 +18,6 @@ rec { options = "grp:alt_shift_toggle"; # Toggle using ALT + SHIFT }; - # Empty matches all - monitor1 = "DP-1"; - monitor2 = "DP-3"; - username = "martin"; root = ../.; diff --git a/shared/home-manager/hyprland/default.nix b/shared/home-manager/hyprland/default.nix index 8763716..fbe6409 100644 --- a/shared/home-manager/hyprland/default.nix +++ b/shared/home-manager/hyprland/default.nix @@ -1,4 +1,4 @@ -# Home configurations for Hyprland. For system configs, see ./modules/hyprland +# Home configurations for Hyprland. For system configs, see ./shared/modules/hyprland { imports = [ ./binds.nix diff --git a/shared/home-manager/hyprland/hyprpaper.nix b/shared/home-manager/hyprland/hyprpaper.nix index ee98dcb..879fb6e 100644 --- a/shared/home-manager/hyprland/hyprpaper.nix +++ b/shared/home-manager/hyprland/hyprpaper.nix @@ -1,7 +1,6 @@ # Wallpapers { pkgs, - common, theme, ... }: @@ -13,8 +12,7 @@ enable = true; settings = let - monitor1 = builtins.toString theme.wallpaper.monitor1; - monitor2 = builtins.toString theme.wallpaper.monitor2; + defaultWallpaper = builtins.toString theme.wallpaper.default; in { ipc = "on"; @@ -22,13 +20,11 @@ splash_offset = 2.0; preload = [ - monitor1 - monitor2 + defaultWallpaper ]; wallpaper = [ - "${common.monitor1},${monitor1}" - "${common.monitor2},${monitor2}" + ",${defaultWallpaper}" ]; }; }; diff --git a/shared/home-manager/hyprland/settings.nix b/shared/home-manager/hyprland/settings.nix index 233ba8f..668488c 100644 --- a/shared/home-manager/hyprland/settings.nix +++ b/shared/home-manager/hyprland/settings.nix @@ -10,8 +10,7 @@ in { wayland.windowManager.hyprland.settings = { monitor = [ - "${common.monitor1}, 3440x1440@175, 0x0, 1" - "${common.monitor2}, 3840x2160@60, 3440x0, 1.5, transform, 1" + ", preferred, auto, 1" ]; # Autostart diff --git a/shared/theme.nix b/shared/theme.nix index 8114d9d..003d76b 100644 --- a/shared/theme.nix +++ b/shared/theme.nix @@ -5,8 +5,9 @@ rec { nerdFont = "JetBrainsMono"; - wallpaper = { + wallpaper = rec { lockscreen = ./assets/catppuccin_page_curl.png; + default = monitor1; monitor1 = ./assets/nixos_waves.png; monitor2 = ./assets/ekg_v2.png; }; -- 2.47.2 From 57d4f949aacaeeb4b3690bceaa1fadd65c038a9d Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Tue, 15 Apr 2025 18:22:06 +0200 Subject: [PATCH 14/15] :bug: Fix build errors. Moved zen styling to hosts and app to shared. Start tailscale in justfile --- .../home-manager/hyprland/default.nix | 1 - .../home-manager/hyprland/settings.nix | 2 +- hosts/thinkpad/home-manager/zen/default.nix | 3 - justfile | 4 + shared/home-manager/zen/chrome/userChrome.css | 113 ------------- .../home-manager/zen/chrome/userContent.css | 158 ------------------ shared/home-manager/zen/chrome/zen-logo.svg | 13 -- shared/home-manager/zen/default.nix | 9 +- 8 files changed, 6 insertions(+), 297 deletions(-) delete mode 100644 shared/home-manager/zen/chrome/userChrome.css delete mode 100644 shared/home-manager/zen/chrome/userContent.css delete mode 100644 shared/home-manager/zen/chrome/zen-logo.svg diff --git a/hosts/thinkpad/home-manager/hyprland/default.nix b/hosts/thinkpad/home-manager/hyprland/default.nix index 9cbe761..5459c8c 100644 --- a/hosts/thinkpad/home-manager/hyprland/default.nix +++ b/hosts/thinkpad/home-manager/hyprland/default.nix @@ -2,7 +2,6 @@ { imports = [ ./hyprpanel.nix - ./hyprpaper.nix ./settings.nix ]; } diff --git a/hosts/thinkpad/home-manager/hyprland/settings.nix b/hosts/thinkpad/home-manager/hyprland/settings.nix index 42826ba..0b11230 100644 --- a/hosts/thinkpad/home-manager/hyprland/settings.nix +++ b/hosts/thinkpad/home-manager/hyprland/settings.nix @@ -7,7 +7,7 @@ wayland.windowManager.hyprland.settings = { monitor = let - common = import ../common.nix; + common = import ../../common.nix; in lib.mkForce [ "${common.monitor1}, 1920x1080@60.05, 0x0, 1" diff --git a/hosts/thinkpad/home-manager/zen/default.nix b/hosts/thinkpad/home-manager/zen/default.nix index 8f253c5..721d1a9 100644 --- a/hosts/thinkpad/home-manager/zen/default.nix +++ b/hosts/thinkpad/home-manager/zen/default.nix @@ -1,5 +1,3 @@ -{ pkgs, inputs, ... }: - { # TODO merge with shared home = { @@ -7,6 +5,5 @@ source = ./chrome; recursive = true; }; - packages = with pkgs; [ inputs.zen-browser.packages.${system}.default ]; # Beta }; } diff --git a/justfile b/justfile index a654adf..01ee804 100644 --- a/justfile +++ b/justfile @@ -34,3 +34,7 @@ lock: # Decrypt all files in the repo using git-crypt and the user's GPG key unlock: git-crypt unlock ~/.config/git/crypt-key + +# Connect to tailnet or sign-in if not registered +start-tailscale: + tailscale up --login-server https://vpn.martials.no diff --git a/shared/home-manager/zen/chrome/userChrome.css b/shared/home-manager/zen/chrome/userChrome.css deleted file mode 100644 index b37a865..0000000 --- a/shared/home-manager/zen/chrome/userChrome.css +++ /dev/null @@ -1,113 +0,0 @@ -/* Catppuccin Mocha Blue userChrome.css*/ - -@media (prefers-color-scheme: dark) { - :root { - --zen-colors-primary: #313244 !important; - --zen-primary-color: #89b4fa !important; - --zen-colors-secondary: #313244 !important; - --zen-colors-tertiary: #181825 !important; - --zen-colors-border: #89b4fa !important; - --toolbarbutton-icon-fill: #89b4fa !important; - --lwt-text-color: #cdd6f4 !important; - --toolbar-field-color: #cdd6f4 !important; - --tab-selected-textcolor: rgb(171, 197, 247) !important; - --toolbar-field-focus-color: #cdd6f4 !important; - --toolbar-color: #cdd6f4 !important; - --newtab-text-primary-color: #cdd6f4 !important; - --arrowpanel-color: #cdd6f4 !important; - --arrowpanel-background: #1e1e2e !important; - --sidebar-text-color: #cdd6f4 !important; - --lwt-sidebar-text-color: #cdd6f4 !important; - --lwt-sidebar-background-color: #11111b !important; - --toolbar-bgcolor: #313244 !important; - --newtab-background-color: #1e1e2e !important; - --zen-themed-toolbar-bg: #181825 !important; - --zen-main-browser-background: #181825 !important; - } - - #permissions-granted-icon { - color: #181825 !important; - } - - .sidebar-placesTree { - background-color: #1e1e2e !important; - } - - #zen-workspaces-button { - background-color: #1e1e2e !important; - } - - #TabsToolbar { - background-color: #181825 !important; - } - - #urlbar-background { - background-color: #1e1e2e !important; - } - - .content-shortcuts { - background-color: #1e1e2e !important; - border-color: #89b4fa !important; - } - - .urlbarView-url { - color: #89b4fa !important; - } - - #zenEditBookmarkPanelFaviconContainer { - background: #11111b !important; - } - - toolbar .toolbarbutton-1 { - &:not([disabled]) { - &:is([open], [checked]) - > :is( - .toolbarbutton-icon, - .toolbarbutton-text, - .toolbarbutton-badge-stack - ) { - fill: #11111b; - } - } - } - - .identity-color-blue { - --identity-tab-color: #89b4fa !important; - --identity-icon-color: #89b4fa !important; - } - - .identity-color-turquoise { - --identity-tab-color: #94e2d5 !important; - --identity-icon-color: #94e2d5 !important; - } - - .identity-color-green { - --identity-tab-color: #a6e3a1 !important; - --identity-icon-color: #a6e3a1 !important; - } - - .identity-color-yellow { - --identity-tab-color: #f9e2af !important; - --identity-icon-color: #f9e2af !important; - } - - .identity-color-orange { - --identity-tab-color: #fab387 !important; - --identity-icon-color: #fab387 !important; - } - - .identity-color-red { - --identity-tab-color: #f38ba8 !important; - --identity-icon-color: #f38ba8 !important; - } - - .identity-color-pink { - --identity-tab-color: #f5c2e7 !important; - --identity-icon-color: #f5c2e7 !important; - } - - .identity-color-purple { - --identity-tab-color: #cba6f7 !important; - --identity-icon-color: #cba6f7 !important; - } -} diff --git a/shared/home-manager/zen/chrome/userContent.css b/shared/home-manager/zen/chrome/userContent.css deleted file mode 100644 index 036655d..0000000 --- a/shared/home-manager/zen/chrome/userContent.css +++ /dev/null @@ -1,158 +0,0 @@ -/* Catppuccin Mocha Blue userContent.css*/ - -@media (prefers-color-scheme: dark) { - /* Common variables affecting all pages */ - @-moz-document url-prefix("about:") { - :root { - --in-content-page-color: #cdd6f4 !important; - --color-accent-primary: #89b4fa !important; - --color-accent-primary-hover: rgb(163, 197, 251) !important; - --color-accent-primary-active: rgb(138, 153, 250) !important; - background-color: #1e1e2e !important; - --in-content-page-background: #1e1e2e !important; - } - } - - /* Variables and styles specific to about:newtab and about:home */ - @-moz-document url("about:newtab"), url("about:home") { - :root { - --newtab-background-color: #1e1e2e !important; - --newtab-background-color-secondary: #313244 !important; - --newtab-element-hover-color: #313244 !important; - --newtab-text-primary-color: #cdd6f4 !important; - --newtab-wordmark-color: #cdd6f4 !important; - --newtab-primary-action-background: #89b4fa !important; - } - - .icon { - color: #89b4fa !important; - } - - .search-wrapper .logo-and-wordmark .logo { - background: - url("zen-logo-mocha.svg"), - url("https://raw.githubusercontent.com/IAmJafeth/zen-browser/main/themes/Mocha/Blue/zen-logo-mocha.svg") - no-repeat center !important; - display: inline-block !important; - height: 82px !important; - width: 82px !important; - background-size: 82px !important; - } - - @media (max-width: 609px) { - .search-wrapper .logo-and-wordmark .logo { - background-size: 64px !important; - height: 64px !important; - width: 64px !important; - } - } - - .card-outer:is(:hover, :focus, .active):not(.placeholder) .card-title { - color: #89b4fa !important; - } - - .top-site-outer .search-topsite { - background-color: #89b4fa !important; - } - - .compact-cards .card-outer .card-context .card-context-icon.icon-download { - fill: #a6e3a1 !important; - } - } - - /* Variables and styles specific to about:preferences */ - @-moz-document url-prefix("about:preferences") { - :root { - --zen-colors-tertiary: #181825 !important; - --in-content-text-color: #cdd6f4 !important; - --link-color: #89b4fa !important; - --link-color-hover: rgb(163, 197, 251) !important; - --zen-colors-primary: #313244 !important; - --in-content-box-background: #313244 !important; - --zen-primary-color: #89b4fa !important; - } - - groupbox, - moz-card { - background: #1e1e2e !important; - } - - button, - groupbox menulist { - background: #313244 !important; - color: #cdd6f4 !important; - } - - .main-content { - background-color: #11111b !important; - } - - .identity-color-blue { - --identity-tab-color: #8aadf4 !important; - --identity-icon-color: #8aadf4 !important; - } - - .identity-color-turquoise { - --identity-tab-color: #8bd5ca !important; - --identity-icon-color: #8bd5ca !important; - } - - .identity-color-green { - --identity-tab-color: #a6da95 !important; - --identity-icon-color: #a6da95 !important; - } - - .identity-color-yellow { - --identity-tab-color: #eed49f !important; - --identity-icon-color: #eed49f !important; - } - - .identity-color-orange { - --identity-tab-color: #f5a97f !important; - --identity-icon-color: #f5a97f !important; - } - - .identity-color-red { - --identity-tab-color: #ed8796 !important; - --identity-icon-color: #ed8796 !important; - } - - .identity-color-pink { - --identity-tab-color: #f5bde6 !important; - --identity-icon-color: #f5bde6 !important; - } - - .identity-color-purple { - --identity-tab-color: #c6a0f6 !important; - --identity-icon-color: #c6a0f6 !important; - } - } - - /* Variables and styles specific to about:addons */ - @-moz-document url-prefix("about:addons") { - :root { - --zen-dark-color-mix-base: #181825 !important; - --background-color-box: #1e1e2e !important; - } - } - - /* Variables and styles specific to about:protections */ - @-moz-document url-prefix("about:protections") { - :root { - --zen-primary-color: #1e1e2e !important; - --social-color: #cba6f7 !important; - --coockie-color: #89dceb !important; - --fingerprinter-color: #f9e2af !important; - --cryptominer-color: #b4befe !important; - --tracker-color: #a6e3a1 !important; - --in-content-primary-button-background-hover: rgb(81, 83, 105) !important; - --in-content-primary-button-text-color-hover: #cdd6f4 !important; - --in-content-primary-button-background: #45475a !important; - --in-content-primary-button-text-color: #cdd6f4 !important; - } - - .card { - background-color: #313244 !important; - } - } -} diff --git a/shared/home-manager/zen/chrome/zen-logo.svg b/shared/home-manager/zen/chrome/zen-logo.svg deleted file mode 100644 index 3038ff2..0000000 --- a/shared/home-manager/zen/chrome/zen-logo.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/shared/home-manager/zen/default.nix b/shared/home-manager/zen/default.nix index b8d3278..f8d71cb 100644 --- a/shared/home-manager/zen/default.nix +++ b/shared/home-manager/zen/default.nix @@ -1,12 +1,5 @@ { pkgs, inputs, ... }: { - # TODO programatically get default name - home = { - file.".zen/audtxq7n.default/chrome" = { - source = ./chrome; - recursive = true; - }; - packages = with pkgs; [ inputs.zen-browser.packages.${system}.default ]; # Beta - }; + home.packages = with pkgs; [ inputs.zen-browser.packages.${system}.default ]; # Beta } -- 2.47.2 From 3df09862574062e4e366b6e2560bd5584edc6816 Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Tue, 15 Apr 2025 18:25:25 +0200 Subject: [PATCH 15/15] :Moved zen styling to hosts: --- .../home-manager/zen/chrome/userChrome.css | 113 +++++++++++++ .../home-manager/zen/chrome/userContent.css | 158 ++++++++++++++++++ .../home-manager/zen/chrome/zen-logo.svg | 13 ++ hosts/desktop/home-manager/zen/default.nix | 7 + hosts/thinkpad/home-manager/zen/default.nix | 8 +- 5 files changed, 294 insertions(+), 5 deletions(-) create mode 100644 hosts/desktop/home-manager/zen/chrome/userChrome.css create mode 100644 hosts/desktop/home-manager/zen/chrome/userContent.css create mode 100644 hosts/desktop/home-manager/zen/chrome/zen-logo.svg create mode 100644 hosts/desktop/home-manager/zen/default.nix diff --git a/hosts/desktop/home-manager/zen/chrome/userChrome.css b/hosts/desktop/home-manager/zen/chrome/userChrome.css new file mode 100644 index 0000000..b37a865 --- /dev/null +++ b/hosts/desktop/home-manager/zen/chrome/userChrome.css @@ -0,0 +1,113 @@ +/* Catppuccin Mocha Blue userChrome.css*/ + +@media (prefers-color-scheme: dark) { + :root { + --zen-colors-primary: #313244 !important; + --zen-primary-color: #89b4fa !important; + --zen-colors-secondary: #313244 !important; + --zen-colors-tertiary: #181825 !important; + --zen-colors-border: #89b4fa !important; + --toolbarbutton-icon-fill: #89b4fa !important; + --lwt-text-color: #cdd6f4 !important; + --toolbar-field-color: #cdd6f4 !important; + --tab-selected-textcolor: rgb(171, 197, 247) !important; + --toolbar-field-focus-color: #cdd6f4 !important; + --toolbar-color: #cdd6f4 !important; + --newtab-text-primary-color: #cdd6f4 !important; + --arrowpanel-color: #cdd6f4 !important; + --arrowpanel-background: #1e1e2e !important; + --sidebar-text-color: #cdd6f4 !important; + --lwt-sidebar-text-color: #cdd6f4 !important; + --lwt-sidebar-background-color: #11111b !important; + --toolbar-bgcolor: #313244 !important; + --newtab-background-color: #1e1e2e !important; + --zen-themed-toolbar-bg: #181825 !important; + --zen-main-browser-background: #181825 !important; + } + + #permissions-granted-icon { + color: #181825 !important; + } + + .sidebar-placesTree { + background-color: #1e1e2e !important; + } + + #zen-workspaces-button { + background-color: #1e1e2e !important; + } + + #TabsToolbar { + background-color: #181825 !important; + } + + #urlbar-background { + background-color: #1e1e2e !important; + } + + .content-shortcuts { + background-color: #1e1e2e !important; + border-color: #89b4fa !important; + } + + .urlbarView-url { + color: #89b4fa !important; + } + + #zenEditBookmarkPanelFaviconContainer { + background: #11111b !important; + } + + toolbar .toolbarbutton-1 { + &:not([disabled]) { + &:is([open], [checked]) + > :is( + .toolbarbutton-icon, + .toolbarbutton-text, + .toolbarbutton-badge-stack + ) { + fill: #11111b; + } + } + } + + .identity-color-blue { + --identity-tab-color: #89b4fa !important; + --identity-icon-color: #89b4fa !important; + } + + .identity-color-turquoise { + --identity-tab-color: #94e2d5 !important; + --identity-icon-color: #94e2d5 !important; + } + + .identity-color-green { + --identity-tab-color: #a6e3a1 !important; + --identity-icon-color: #a6e3a1 !important; + } + + .identity-color-yellow { + --identity-tab-color: #f9e2af !important; + --identity-icon-color: #f9e2af !important; + } + + .identity-color-orange { + --identity-tab-color: #fab387 !important; + --identity-icon-color: #fab387 !important; + } + + .identity-color-red { + --identity-tab-color: #f38ba8 !important; + --identity-icon-color: #f38ba8 !important; + } + + .identity-color-pink { + --identity-tab-color: #f5c2e7 !important; + --identity-icon-color: #f5c2e7 !important; + } + + .identity-color-purple { + --identity-tab-color: #cba6f7 !important; + --identity-icon-color: #cba6f7 !important; + } +} diff --git a/hosts/desktop/home-manager/zen/chrome/userContent.css b/hosts/desktop/home-manager/zen/chrome/userContent.css new file mode 100644 index 0000000..036655d --- /dev/null +++ b/hosts/desktop/home-manager/zen/chrome/userContent.css @@ -0,0 +1,158 @@ +/* Catppuccin Mocha Blue userContent.css*/ + +@media (prefers-color-scheme: dark) { + /* Common variables affecting all pages */ + @-moz-document url-prefix("about:") { + :root { + --in-content-page-color: #cdd6f4 !important; + --color-accent-primary: #89b4fa !important; + --color-accent-primary-hover: rgb(163, 197, 251) !important; + --color-accent-primary-active: rgb(138, 153, 250) !important; + background-color: #1e1e2e !important; + --in-content-page-background: #1e1e2e !important; + } + } + + /* Variables and styles specific to about:newtab and about:home */ + @-moz-document url("about:newtab"), url("about:home") { + :root { + --newtab-background-color: #1e1e2e !important; + --newtab-background-color-secondary: #313244 !important; + --newtab-element-hover-color: #313244 !important; + --newtab-text-primary-color: #cdd6f4 !important; + --newtab-wordmark-color: #cdd6f4 !important; + --newtab-primary-action-background: #89b4fa !important; + } + + .icon { + color: #89b4fa !important; + } + + .search-wrapper .logo-and-wordmark .logo { + background: + url("zen-logo-mocha.svg"), + url("https://raw.githubusercontent.com/IAmJafeth/zen-browser/main/themes/Mocha/Blue/zen-logo-mocha.svg") + no-repeat center !important; + display: inline-block !important; + height: 82px !important; + width: 82px !important; + background-size: 82px !important; + } + + @media (max-width: 609px) { + .search-wrapper .logo-and-wordmark .logo { + background-size: 64px !important; + height: 64px !important; + width: 64px !important; + } + } + + .card-outer:is(:hover, :focus, .active):not(.placeholder) .card-title { + color: #89b4fa !important; + } + + .top-site-outer .search-topsite { + background-color: #89b4fa !important; + } + + .compact-cards .card-outer .card-context .card-context-icon.icon-download { + fill: #a6e3a1 !important; + } + } + + /* Variables and styles specific to about:preferences */ + @-moz-document url-prefix("about:preferences") { + :root { + --zen-colors-tertiary: #181825 !important; + --in-content-text-color: #cdd6f4 !important; + --link-color: #89b4fa !important; + --link-color-hover: rgb(163, 197, 251) !important; + --zen-colors-primary: #313244 !important; + --in-content-box-background: #313244 !important; + --zen-primary-color: #89b4fa !important; + } + + groupbox, + moz-card { + background: #1e1e2e !important; + } + + button, + groupbox menulist { + background: #313244 !important; + color: #cdd6f4 !important; + } + + .main-content { + background-color: #11111b !important; + } + + .identity-color-blue { + --identity-tab-color: #8aadf4 !important; + --identity-icon-color: #8aadf4 !important; + } + + .identity-color-turquoise { + --identity-tab-color: #8bd5ca !important; + --identity-icon-color: #8bd5ca !important; + } + + .identity-color-green { + --identity-tab-color: #a6da95 !important; + --identity-icon-color: #a6da95 !important; + } + + .identity-color-yellow { + --identity-tab-color: #eed49f !important; + --identity-icon-color: #eed49f !important; + } + + .identity-color-orange { + --identity-tab-color: #f5a97f !important; + --identity-icon-color: #f5a97f !important; + } + + .identity-color-red { + --identity-tab-color: #ed8796 !important; + --identity-icon-color: #ed8796 !important; + } + + .identity-color-pink { + --identity-tab-color: #f5bde6 !important; + --identity-icon-color: #f5bde6 !important; + } + + .identity-color-purple { + --identity-tab-color: #c6a0f6 !important; + --identity-icon-color: #c6a0f6 !important; + } + } + + /* Variables and styles specific to about:addons */ + @-moz-document url-prefix("about:addons") { + :root { + --zen-dark-color-mix-base: #181825 !important; + --background-color-box: #1e1e2e !important; + } + } + + /* Variables and styles specific to about:protections */ + @-moz-document url-prefix("about:protections") { + :root { + --zen-primary-color: #1e1e2e !important; + --social-color: #cba6f7 !important; + --coockie-color: #89dceb !important; + --fingerprinter-color: #f9e2af !important; + --cryptominer-color: #b4befe !important; + --tracker-color: #a6e3a1 !important; + --in-content-primary-button-background-hover: rgb(81, 83, 105) !important; + --in-content-primary-button-text-color-hover: #cdd6f4 !important; + --in-content-primary-button-background: #45475a !important; + --in-content-primary-button-text-color: #cdd6f4 !important; + } + + .card { + background-color: #313244 !important; + } + } +} diff --git a/hosts/desktop/home-manager/zen/chrome/zen-logo.svg b/hosts/desktop/home-manager/zen/chrome/zen-logo.svg new file mode 100644 index 0000000..3038ff2 --- /dev/null +++ b/hosts/desktop/home-manager/zen/chrome/zen-logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/hosts/desktop/home-manager/zen/default.nix b/hosts/desktop/home-manager/zen/default.nix new file mode 100644 index 0000000..fa562fc --- /dev/null +++ b/hosts/desktop/home-manager/zen/default.nix @@ -0,0 +1,7 @@ +{ + # TODO merge with shared + home.file.".zen/audtxq7n.default/chrome" = { + source = ./chrome; + recursive = true; + }; +} diff --git a/hosts/thinkpad/home-manager/zen/default.nix b/hosts/thinkpad/home-manager/zen/default.nix index 721d1a9..15d93cc 100644 --- a/hosts/thinkpad/home-manager/zen/default.nix +++ b/hosts/thinkpad/home-manager/zen/default.nix @@ -1,9 +1,7 @@ { # TODO merge with shared - home = { - file.".zen/xdaxqlov.default/chrome" = { - source = ./chrome; - recursive = true; - }; + home.file.".zen/xdaxqlov.default/chrome" = { + source = ./chrome; + recursive = true; }; } -- 2.47.2