From 390691be5714a2035fd7ec3daf040658d72d1f62 Mon Sep 17 00:00:00 2001 From: Anthony Rodriguez Date: Wed, 18 Dec 2024 19:24:59 +0100 Subject: [PATCH] treewide: refactor structure I have decided to refactor the entire structure of my repository, as the old one was getting quite cluttered and I needed something that made more sense. I've decided to go with the following, which will be explained in the README when I find the time to do it. The gist of it is: - Put everything shared into its shared directory - Rewrite the theme module (now style) to be more split, as it is theming a lot of different apps - Merge nixos and home-manager configurations back into a singular config directory Thanks a lot to llakala for the massive help she was with my Nix code. commit 66ff9820f8edc98350544df6848cfcc30c9deb77 Author: Anthony Rodriguez Date: Wed Dec 18 19:23:28 2024 +0100 shared/nixosModules/style: use sharedModules commit 127129404976e88d2b314f7bba87685a9c290685 Author: Anthony Rodriguez Date: Wed Dec 18 19:23:13 2024 +0100 treewide: remove unused nvidia file commit ab18a424182e95f2e7767184e2dc2358426157ca Author: Anthony Rodriguez Date: Wed Dec 18 19:02:34 2024 +0100 flake: remove uneeded directory for nodes commit f8afc9f4615b725064279530984d13cb73860d6e Author: Anthony Rodriguez Date: Wed Dec 18 18:43:19 2024 +0100 shared/nixosModules/style: split everything into its file commit 851a4d0d32176bd8fcbca5dfb7ca88f1cbb9b368 Author: Anthony Rodriguez Date: Wed Dec 18 11:15:40 2024 +0100 repo: update README commit e01237d59a134b1f31ddfdbc9c9edcc0eabf9f98 Author: Anthony Rodriguez Date: Wed Dec 18 11:00:56 2024 +0100 hosts/solaire: delete unused modules directory commit 1c3665ec1cd283274c9775c31bb347a06ab7243d Author: Anthony Rodriguez Date: Wed Dec 18 11:00:24 2024 +0100 pkgs: move to shared/pkgs commit 587e8d321bfe956b3a67c159e071e62f5bca1227 Author: Anthony Rodriguez Date: Wed Dec 18 10:57:03 2024 +0100 treewide: split up options from theming module, rename to style As an initial step towards refactoring the theming module, the options have been split up from the configuration itself. This will allow to find available options quicker, and separate concerns nicely. It was also renamed to style, to avoid confusion with its own options (eg. gtk.theme). commit 87bb04f0653b9363e692084ae15eae8de30b4f1c Author: Anthony Rodriguez Date: Wed Dec 18 10:19:59 2024 +0100 config/nixos/core/boot: remove unused arguments commit 8e7c0584efaaf2e5a7bec37fd79d33fee13cf813 Author: Anthony Rodriguez Date: Wed Dec 18 10:19:46 2024 +0100 hosts: move host-specific configuration to hosts/{host}/config commit a600143e8a116f211ae21b637517515e6a055a20 Author: Anthony Rodriguez Date: Wed Dec 18 10:19:24 2024 +0100 nvidia: move to hosts/solaire commit 7174a33a447256eda6e0de5efbf83083bb5f94e8 Author: Anthony Rodriguez Date: Wed Dec 18 10:14:06 2024 +0100 treewide: reorganize general structure commit b86f1470ed00f84246fb91fa6eb7a5f9afe22695 Author: Anthony Rodriguez Date: Wed Dec 18 10:03:08 2024 +0100 hosts/solaire: set global vars commit de6ea242c08762535e629260c659d01caef1eb7b Author: Anthony Rodriguez Date: Wed Dec 18 09:24:59 2024 +0100 system/network: replace hard-coded values with global vars commit 5acf11adcad6872d52efcdff0e95a07afa1bce81 Author: Anthony Rodriguez Date: Wed Dec 18 09:24:51 2024 +0100 system/core/users: replace hard-coded values with global vars commit 96425172a04c7c43cc0989b6dda19305bf3a5e0d Author: Anthony Rodriguez Date: Wed Dec 18 09:24:30 2024 +0100 hosts/vamos: set global vars commit 8338818b7d84541fd37d2a195e845aff575c3d53 Author: Anthony Rodriguez Date: Wed Dec 18 09:24:23 2024 +0100 hosts: import local modules by default commit ffb60ac8694b0fa18851a1a3ce8b0f77bd050531 Author: Anthony Rodriguez Date: Wed Dec 18 09:23:54 2024 +0100 flake: update eachSystem to use lib.systems.flakeExposed commit e98a15db1d449c7a8993abac2ede6fdb5fe84958 Author: Anthony Rodriguez Date: Wed Dec 18 09:23:33 2024 +0100 modules: create modules to hold global variables --- README.md | 25 +- {home => config/home-manager}/default.nix | 8 +- .../programs/browsers/default.nix | 0 .../programs/browsers/firefox.nix | 0 .../home-manager}/programs/default.nix | 0 .../home-manager}/programs/editors/helix.nix | 0 .../home-manager}/programs/editors/neovim.nix | 0 .../home-manager}/programs/fuzzel.nix | 0 .../home-manager}/programs/games/default.nix | 0 .../home-manager}/programs/gnome/default.nix | 2 +- .../home-manager}/programs/hypr/default.nix | 0 .../home-manager}/programs/hypr/idle.nix | 0 .../programs/hypr/land/binds.nix | 0 .../programs/hypr/land/default.nix | 0 .../home-manager}/programs/hypr/lock.nix | 0 .../home-manager}/programs/media/default.nix | 0 .../home-manager}/programs/media/zathura.nix | 0 .../home-manager}/programs/niri/binds.nix | 0 .../home-manager}/programs/niri/default.nix | 0 .../home-manager}/programs/swaybg.nix | 2 +- .../home-manager}/programs/swayidle.nix | 0 .../home-manager}/programs/swaylock.nix | 0 .../home-manager}/programs/waybar/default.nix | 0 .../home-manager}/programs/waybar/style.css | 0 .../home-manager}/programs/wlogout.nix | 0 .../home-manager}/programs/xdg.nix | 0 .../home-manager}/services/flatpak.nix | 0 .../home-manager}/services/swaync/default.nix | 0 .../home-manager}/services/swaync/style.css | 0 .../home-manager}/services/syncthing.nix | 0 .../home-manager}/services/udiskie.nix | 0 .../home-manager}/terminal/default.nix | 0 .../home-manager}/terminal/emulators/foot.nix | 0 .../terminal/emulators/gnome-terminal.nix | 0 .../terminal/emulators/wezterm.nix | 0 .../home-manager}/terminal/programs/bat.nix | 0 .../terminal/programs/default.nix | 0 .../terminal/programs/direnv.nix | 0 .../home-manager}/terminal/programs/git.nix | 0 .../home-manager}/terminal/programs/gnupg.nix | 0 .../terminal/programs/nix-index.nix | 0 .../home-manager}/terminal/programs/tmux.nix | 0 .../home-manager}/terminal/programs/yazi.nix | 0 .../home-manager}/terminal/shell/default.nix | 0 .../home-manager}/terminal/shell/fish.nix | 0 .../home-manager}/terminal/shell/nushell.nix | 0 .../home-manager}/terminal/shell/starship.nix | 0 .../home-manager}/terminal/shell/zoxide.nix | 0 {system => config/nixos}/core/boot.nix | 2 +- {system => config/nixos}/core/default.nix | 0 {system => config/nixos}/core/lanzaboote.nix | 0 {system => config/nixos}/core/networking.nix | 0 {system => config/nixos}/core/security.nix | 0 {system => config/nixos}/core/users.nix | 6 +- {system => config/nixos}/default.nix | 0 {system => config/nixos}/hardware/fprintd.nix | 0 {system => config/nixos}/hardware/fwupd.nix | 0 .../nixos}/hardware/printing.nix | 0 .../nixos}/hardware/uni-sync.nix | 0 {system => config/nixos}/hardware/via.nix | 0 {system => config/nixos}/network/default.nix | 3 +- {system => config/nixos}/nix/default.nix | 0 {system => config/nixos}/nix/nh.nix | 0 {system => config/nixos}/nix/nixpkgs.nix | 0 {system => config/nixos}/programs/default.nix | 0 {system => config/nixos}/programs/fonts.nix | 0 {system => config/nixos}/programs/games.nix | 0 {system => config/nixos}/programs/gnome.nix | 0 .../nixos}/programs/home-manager.nix | 0 .../nixos}/programs/hyprland.nix | 0 {system => config/nixos}/programs/kde.nix | 0 .../nixos}/programs/niri/default.nix | 0 .../nixos}/services/brightness.nix | 0 {system => config/nixos}/services/default.nix | 0 {system => config/nixos}/services/docker.nix | 0 .../nixos}/services/documentation.nix | 0 {system => config/nixos}/services/flatpak.nix | 0 {system => config/nixos}/services/forgejo.nix | 0 {system => config/nixos}/services/gnome.nix | 0 {system => config/nixos}/services/gnupg.nix | 0 {system => config/nixos}/services/greetd.nix | 3 +- {system => config/nixos}/services/kanata.nix | 0 {system => config/nixos}/services/keyd.nix | 0 {system => config/nixos}/services/kmscon.nix | 0 {system => config/nixos}/services/logind.nix | 0 {system => config/nixos}/services/mail.nix | 0 .../nixos}/services/pipewire.nix | 0 .../nixos}/services/portfolio.nix | 0 {system => config/nixos}/services/power.nix | 0 {system => config/nixos}/services/searx.nix | 0 .../nixos}/services/syncthing.nix | 0 flake.lock | 16 - flake.nix | 8 +- hosts/default.nix | 6 +- .../solaire/config}/nvidia.nix | 0 hosts/solaire/{modules => config}/theme.nix | 2 +- hosts/solaire/default.nix | 63 +- hosts/solaire/modules/default.nix | 3 - hosts/vamos/{modules => config}/theme.nix | 2 +- hosts/vamos/default.nix | 63 +- hosts/vamos/modules/default.nix | 3 - modules/default.nix | 3 - modules/theme/default.nix | 682 ------------------ modules/theme/gtk.nix | 78 -- nodes/default.nix => nodes.nix | 0 {lib => shared/lib}/default.nix | 0 shared/nixosModules/default.nix | 7 + shared/nixosModules/homeVars.nix | 31 + shared/nixosModules/style/default.nix | 34 + shared/nixosModules/style/modules/discord.nix | 114 +++ shared/nixosModules/style/modules/fish.nix | 46 ++ shared/nixosModules/style/modules/foot.nix | 44 ++ shared/nixosModules/style/modules/fuzzel.nix | 27 + shared/nixosModules/style/modules/gtk.nix | 30 + .../nixosModules/style/modules/hyprland.nix | 27 + .../nixosModules/style/modules/hyprlock.nix | 103 +++ shared/nixosModules/style/modules/niri.nix | 21 + shared/nixosModules/style/modules/nvf.nix | 17 + .../nixosModules/style/modules/starship.nix | 27 + .../nixosModules/style/modules/swaylock.nix | 47 ++ shared/nixosModules/style/modules/swaync.nix | 14 + .../nixosModules/style/modules/tidal-hifi.nix | 195 +++++ shared/nixosModules/style/modules/waybar.nix | 15 + shared/nixosModules/style/modules/zathura.nix | 43 ++ shared/nixosModules/style/options.nix | 138 ++++ shared/nixosModules/systemVars.nix | 35 + {pkgs => shared/pkgs}/bolt-launcher.nix | 0 {pkgs => shared/pkgs}/default.nix | 0 .../pkgs}/mcuxpresso/config-tools.nix | 0 {pkgs => shared/pkgs}/mcuxpresso/default.nix | 0 {pkgs => shared/pkgs}/mcuxpresso/ide.nix | 0 131 files changed, 1120 insertions(+), 875 deletions(-) rename {home => config/home-manager}/default.nix (54%) rename {home => config/home-manager}/programs/browsers/default.nix (100%) rename {home => config/home-manager}/programs/browsers/firefox.nix (100%) rename {home => config/home-manager}/programs/default.nix (100%) rename {home => config/home-manager}/programs/editors/helix.nix (100%) rename {home => config/home-manager}/programs/editors/neovim.nix (100%) rename {home => config/home-manager}/programs/fuzzel.nix (100%) rename {home => config/home-manager}/programs/games/default.nix (100%) rename {home => config/home-manager}/programs/gnome/default.nix (98%) rename {home => config/home-manager}/programs/hypr/default.nix (100%) rename {home => config/home-manager}/programs/hypr/idle.nix (100%) rename {home => config/home-manager}/programs/hypr/land/binds.nix (100%) rename {home => config/home-manager}/programs/hypr/land/default.nix (100%) rename {home => config/home-manager}/programs/hypr/lock.nix (100%) rename {home => config/home-manager}/programs/media/default.nix (100%) rename {home => config/home-manager}/programs/media/zathura.nix (100%) rename {home => config/home-manager}/programs/niri/binds.nix (100%) rename {home => config/home-manager}/programs/niri/default.nix (100%) rename {home => config/home-manager}/programs/swaybg.nix (82%) rename {home => config/home-manager}/programs/swayidle.nix (100%) rename {home => config/home-manager}/programs/swaylock.nix (100%) rename {home => config/home-manager}/programs/waybar/default.nix (100%) rename {home => config/home-manager}/programs/waybar/style.css (100%) rename {home => config/home-manager}/programs/wlogout.nix (100%) rename {home => config/home-manager}/programs/xdg.nix (100%) rename {home => config/home-manager}/services/flatpak.nix (100%) rename {home => config/home-manager}/services/swaync/default.nix (100%) rename {home => config/home-manager}/services/swaync/style.css (100%) rename {home => config/home-manager}/services/syncthing.nix (100%) rename {home => config/home-manager}/services/udiskie.nix (100%) rename {home => config/home-manager}/terminal/default.nix (100%) rename {home => config/home-manager}/terminal/emulators/foot.nix (100%) rename {home => config/home-manager}/terminal/emulators/gnome-terminal.nix (100%) rename {home => config/home-manager}/terminal/emulators/wezterm.nix (100%) rename {home => config/home-manager}/terminal/programs/bat.nix (100%) rename {home => config/home-manager}/terminal/programs/default.nix (100%) rename {home => config/home-manager}/terminal/programs/direnv.nix (100%) rename {home => config/home-manager}/terminal/programs/git.nix (100%) rename {home => config/home-manager}/terminal/programs/gnupg.nix (100%) rename {home => config/home-manager}/terminal/programs/nix-index.nix (100%) rename {home => config/home-manager}/terminal/programs/tmux.nix (100%) rename {home => config/home-manager}/terminal/programs/yazi.nix (100%) rename {home => config/home-manager}/terminal/shell/default.nix (100%) rename {home => config/home-manager}/terminal/shell/fish.nix (100%) rename {home => config/home-manager}/terminal/shell/nushell.nix (100%) rename {home => config/home-manager}/terminal/shell/starship.nix (100%) rename {home => config/home-manager}/terminal/shell/zoxide.nix (100%) rename {system => config/nixos}/core/boot.nix (97%) rename {system => config/nixos}/core/default.nix (100%) rename {system => config/nixos}/core/lanzaboote.nix (100%) rename {system => config/nixos}/core/networking.nix (100%) rename {system => config/nixos}/core/security.nix (100%) rename {system => config/nixos}/core/users.nix (51%) rename {system => config/nixos}/default.nix (100%) rename {system => config/nixos}/hardware/fprintd.nix (100%) rename {system => config/nixos}/hardware/fwupd.nix (100%) rename {system => config/nixos}/hardware/printing.nix (100%) rename {system => config/nixos}/hardware/uni-sync.nix (100%) rename {system => config/nixos}/hardware/via.nix (100%) rename {system => config/nixos}/network/default.nix (77%) rename {system => config/nixos}/nix/default.nix (100%) rename {system => config/nixos}/nix/nh.nix (100%) rename {system => config/nixos}/nix/nixpkgs.nix (100%) rename {system => config/nixos}/programs/default.nix (100%) rename {system => config/nixos}/programs/fonts.nix (100%) rename {system => config/nixos}/programs/games.nix (100%) rename {system => config/nixos}/programs/gnome.nix (100%) rename {system => config/nixos}/programs/home-manager.nix (100%) rename {system => config/nixos}/programs/hyprland.nix (100%) rename {system => config/nixos}/programs/kde.nix (100%) rename {system => config/nixos}/programs/niri/default.nix (100%) rename {system => config/nixos}/services/brightness.nix (100%) rename {system => config/nixos}/services/default.nix (100%) rename {system => config/nixos}/services/docker.nix (100%) rename {system => config/nixos}/services/documentation.nix (100%) rename {system => config/nixos}/services/flatpak.nix (100%) rename {system => config/nixos}/services/forgejo.nix (100%) rename {system => config/nixos}/services/gnome.nix (100%) rename {system => config/nixos}/services/gnupg.nix (100%) rename {system => config/nixos}/services/greetd.nix (95%) rename {system => config/nixos}/services/kanata.nix (100%) rename {system => config/nixos}/services/keyd.nix (100%) rename {system => config/nixos}/services/kmscon.nix (100%) rename {system => config/nixos}/services/logind.nix (100%) rename {system => config/nixos}/services/mail.nix (100%) rename {system => config/nixos}/services/pipewire.nix (100%) rename {system => config/nixos}/services/portfolio.nix (100%) rename {system => config/nixos}/services/power.nix (100%) rename {system => config/nixos}/services/searx.nix (100%) rename {system => config/nixos}/services/syncthing.nix (100%) rename {system/hardware => hosts/solaire/config}/nvidia.nix (100%) rename hosts/solaire/{modules => config}/theme.nix (85%) delete mode 100644 hosts/solaire/modules/default.nix rename hosts/vamos/{modules => config}/theme.nix (94%) delete mode 100644 hosts/vamos/modules/default.nix delete mode 100644 modules/default.nix delete mode 100644 modules/theme/default.nix delete mode 100644 modules/theme/gtk.nix rename nodes/default.nix => nodes.nix (100%) rename {lib => shared/lib}/default.nix (100%) create mode 100644 shared/nixosModules/default.nix create mode 100644 shared/nixosModules/homeVars.nix create mode 100644 shared/nixosModules/style/default.nix create mode 100644 shared/nixosModules/style/modules/discord.nix create mode 100644 shared/nixosModules/style/modules/fish.nix create mode 100644 shared/nixosModules/style/modules/foot.nix create mode 100644 shared/nixosModules/style/modules/fuzzel.nix create mode 100644 shared/nixosModules/style/modules/gtk.nix create mode 100644 shared/nixosModules/style/modules/hyprland.nix create mode 100644 shared/nixosModules/style/modules/hyprlock.nix create mode 100644 shared/nixosModules/style/modules/niri.nix create mode 100644 shared/nixosModules/style/modules/nvf.nix create mode 100644 shared/nixosModules/style/modules/starship.nix create mode 100644 shared/nixosModules/style/modules/swaylock.nix create mode 100644 shared/nixosModules/style/modules/swaync.nix create mode 100644 shared/nixosModules/style/modules/tidal-hifi.nix create mode 100644 shared/nixosModules/style/modules/waybar.nix create mode 100644 shared/nixosModules/style/modules/zathura.nix create mode 100644 shared/nixosModules/style/options.nix create mode 100644 shared/nixosModules/systemVars.nix rename {pkgs => shared/pkgs}/bolt-launcher.nix (100%) rename {pkgs => shared/pkgs}/default.nix (100%) rename {pkgs => shared/pkgs}/mcuxpresso/config-tools.nix (100%) rename {pkgs => shared/pkgs}/mcuxpresso/default.nix (100%) rename {pkgs => shared/pkgs}/mcuxpresso/ide.nix (100%) diff --git a/README.md b/README.md index c83c1c0..a493bbd 100644 --- a/README.md +++ b/README.md @@ -4,31 +4,29 @@ My NixOS configurations, using flakes. # Software I use -- Wayland compositor: [niri](https://github.com/YaLTeR/niri) +- Wayland compositor: [Hyprland](https://github.com/hyprwm/Hyprland) - Text editor: [neovim](https://github.com/neovim/neovim) - Shell: [fish](https://github.com/fish-shell/fish-shell) -- Colors: [Catppuccin](https://github.com/catppuccin/catppuccin) -- Font: [Intel One Mono](https://github.com/intel/intel-one-mono) Additionally using a lot of other software you can find in the configuration files. # 🛠️ Structure -| Name | Description | -| ------------------- | -------------------------- | -| [home](home/) | Home manager configuration | -| [hosts](hosts/) | Host-specific | -| [lib](lib/) | Helper functions | -| [modules](modules/) | NixOS modules | -| [pkgs](pkgs/) | Custom packages | -| [system](system/) | NixOS configuration | +| Name | Description | +| ----------------- | ------------------------------------------------------------- | +| [assets](assets/) | Resources used throughout the system (images etc.) | +| [config](config/) | System configuration (separated between NixOS / home-manager) | +| [hosts](hosts/) | Host-specific | +| [lib](lib/) | Helper functions | +| [shared](shared/) | Re-used components (internal modules, custom derivations) | My configuration is structured based on the following principles: 1. Hosts should be the main entry points and outputs. 2. Abstractions should be avoided as much as possible. +3. Setting up theming should be as simple as changing one or two options. -The bulk of the configuration can be found either in [home](home/) or [system](system/), which declares most of my programs, with some extra Nix code in [lib](lib/) and custom [modules](modules/), mostly for convenience and to provide a way to globally set styles and themes for now. +The main configuration can be found in [config](config/), which declares most of my programs, with re-usable modules and derivations in [shared](shared/), to provide a way to globally set themes, usernames and more. My hosts can then pick and choose the programs and configurations that they need from the other directories. If the need arises for a more modular setup for a specific piece of software (ie. having different flavors of Firefox per host), I will write a custom module for it. This helps to avoid unnecessarily abstracting my configuration, as I don't find it necessary for the most part, and I would also like it to remain as simple as possible. @@ -39,5 +37,6 @@ People / repositories I have copied / learned from: - [fufexan/dotfiles](https://github.com/fufexan/dotfiles) for the configuration structure - [jacekpoz/nixos](https://git.jacekpoz.pl/poz/niksos) for learning how NixOS modules work - [sodiboo](https://github.com/sodiboo) for helping me a whole lot with Niri-specific issues +- [llakala](https://github.com/llakala) for being very thorough and helpful when cleaning up my code and general structure. -Some bits have also been borrowed from within the configuration, and credit has been given where its due. + Some bits have also been borrowed from within the configuration, and credit has been given where its due. diff --git a/home/default.nix b/config/home-manager/default.nix similarity index 54% rename from home/default.nix rename to config/home-manager/default.nix index 8811c20..8c4543e 100644 --- a/home/default.nix +++ b/config/home-manager/default.nix @@ -1,12 +1,12 @@ -{ +{osConfig, ...}: { imports = [ ./services/udiskie.nix ./terminal ./programs ]; - home = { - username = "nezia"; - homeDirectory = "/home/nezia"; + home = rec { + inherit (osConfig.local.systemVars) username; + homeDirectory = "/home/${username}"; stateVersion = "24.05"; }; diff --git a/home/programs/browsers/default.nix b/config/home-manager/programs/browsers/default.nix similarity index 100% rename from home/programs/browsers/default.nix rename to config/home-manager/programs/browsers/default.nix diff --git a/home/programs/browsers/firefox.nix b/config/home-manager/programs/browsers/firefox.nix similarity index 100% rename from home/programs/browsers/firefox.nix rename to config/home-manager/programs/browsers/firefox.nix diff --git a/home/programs/default.nix b/config/home-manager/programs/default.nix similarity index 100% rename from home/programs/default.nix rename to config/home-manager/programs/default.nix diff --git a/home/programs/editors/helix.nix b/config/home-manager/programs/editors/helix.nix similarity index 100% rename from home/programs/editors/helix.nix rename to config/home-manager/programs/editors/helix.nix diff --git a/home/programs/editors/neovim.nix b/config/home-manager/programs/editors/neovim.nix similarity index 100% rename from home/programs/editors/neovim.nix rename to config/home-manager/programs/editors/neovim.nix diff --git a/home/programs/fuzzel.nix b/config/home-manager/programs/fuzzel.nix similarity index 100% rename from home/programs/fuzzel.nix rename to config/home-manager/programs/fuzzel.nix diff --git a/home/programs/games/default.nix b/config/home-manager/programs/games/default.nix similarity index 100% rename from home/programs/games/default.nix rename to config/home-manager/programs/games/default.nix diff --git a/home/programs/gnome/default.nix b/config/home-manager/programs/gnome/default.nix similarity index 98% rename from home/programs/gnome/default.nix rename to config/home-manager/programs/gnome/default.nix index 005da1a..8e7b566 100644 --- a/home/programs/gnome/default.nix +++ b/config/home-manager/programs/gnome/default.nix @@ -26,7 +26,7 @@ color-scheme = "prefer-dark"; }; "org/gnome/desktop/background" = { - picture-uri-dark = "file://" + builtins.toString osConfig.theme.wallpaper; + picture-uri-dark = "file://" + builtins.toString osConfig.local.style.wallpaper; }; "org/gnome/desktop/search-providers" = { diff --git a/home/programs/hypr/default.nix b/config/home-manager/programs/hypr/default.nix similarity index 100% rename from home/programs/hypr/default.nix rename to config/home-manager/programs/hypr/default.nix diff --git a/home/programs/hypr/idle.nix b/config/home-manager/programs/hypr/idle.nix similarity index 100% rename from home/programs/hypr/idle.nix rename to config/home-manager/programs/hypr/idle.nix diff --git a/home/programs/hypr/land/binds.nix b/config/home-manager/programs/hypr/land/binds.nix similarity index 100% rename from home/programs/hypr/land/binds.nix rename to config/home-manager/programs/hypr/land/binds.nix diff --git a/home/programs/hypr/land/default.nix b/config/home-manager/programs/hypr/land/default.nix similarity index 100% rename from home/programs/hypr/land/default.nix rename to config/home-manager/programs/hypr/land/default.nix diff --git a/home/programs/hypr/lock.nix b/config/home-manager/programs/hypr/lock.nix similarity index 100% rename from home/programs/hypr/lock.nix rename to config/home-manager/programs/hypr/lock.nix diff --git a/home/programs/media/default.nix b/config/home-manager/programs/media/default.nix similarity index 100% rename from home/programs/media/default.nix rename to config/home-manager/programs/media/default.nix diff --git a/home/programs/media/zathura.nix b/config/home-manager/programs/media/zathura.nix similarity index 100% rename from home/programs/media/zathura.nix rename to config/home-manager/programs/media/zathura.nix diff --git a/home/programs/niri/binds.nix b/config/home-manager/programs/niri/binds.nix similarity index 100% rename from home/programs/niri/binds.nix rename to config/home-manager/programs/niri/binds.nix diff --git a/home/programs/niri/default.nix b/config/home-manager/programs/niri/default.nix similarity index 100% rename from home/programs/niri/default.nix rename to config/home-manager/programs/niri/default.nix diff --git a/home/programs/swaybg.nix b/config/home-manager/programs/swaybg.nix similarity index 82% rename from home/programs/swaybg.nix rename to config/home-manager/programs/swaybg.nix index b81ef1d..f136e86 100644 --- a/home/programs/swaybg.nix +++ b/config/home-manager/programs/swaybg.nix @@ -11,7 +11,7 @@ PartOf = ["graphical-session.target"]; }; Service = { - ExecStart = "${lib.getExe pkgs.swaybg} -i ${osConfig.theme.wallpaper} -m fill"; + ExecStart = "${lib.getExe pkgs.swaybg} -i ${osConfig.local.style.wallpaper} -m fill"; Restart = "on-failure"; }; Install.WantedBy = ["graphical-session.target"]; diff --git a/home/programs/swayidle.nix b/config/home-manager/programs/swayidle.nix similarity index 100% rename from home/programs/swayidle.nix rename to config/home-manager/programs/swayidle.nix diff --git a/home/programs/swaylock.nix b/config/home-manager/programs/swaylock.nix similarity index 100% rename from home/programs/swaylock.nix rename to config/home-manager/programs/swaylock.nix diff --git a/home/programs/waybar/default.nix b/config/home-manager/programs/waybar/default.nix similarity index 100% rename from home/programs/waybar/default.nix rename to config/home-manager/programs/waybar/default.nix diff --git a/home/programs/waybar/style.css b/config/home-manager/programs/waybar/style.css similarity index 100% rename from home/programs/waybar/style.css rename to config/home-manager/programs/waybar/style.css diff --git a/home/programs/wlogout.nix b/config/home-manager/programs/wlogout.nix similarity index 100% rename from home/programs/wlogout.nix rename to config/home-manager/programs/wlogout.nix diff --git a/home/programs/xdg.nix b/config/home-manager/programs/xdg.nix similarity index 100% rename from home/programs/xdg.nix rename to config/home-manager/programs/xdg.nix diff --git a/home/services/flatpak.nix b/config/home-manager/services/flatpak.nix similarity index 100% rename from home/services/flatpak.nix rename to config/home-manager/services/flatpak.nix diff --git a/home/services/swaync/default.nix b/config/home-manager/services/swaync/default.nix similarity index 100% rename from home/services/swaync/default.nix rename to config/home-manager/services/swaync/default.nix diff --git a/home/services/swaync/style.css b/config/home-manager/services/swaync/style.css similarity index 100% rename from home/services/swaync/style.css rename to config/home-manager/services/swaync/style.css diff --git a/home/services/syncthing.nix b/config/home-manager/services/syncthing.nix similarity index 100% rename from home/services/syncthing.nix rename to config/home-manager/services/syncthing.nix diff --git a/home/services/udiskie.nix b/config/home-manager/services/udiskie.nix similarity index 100% rename from home/services/udiskie.nix rename to config/home-manager/services/udiskie.nix diff --git a/home/terminal/default.nix b/config/home-manager/terminal/default.nix similarity index 100% rename from home/terminal/default.nix rename to config/home-manager/terminal/default.nix diff --git a/home/terminal/emulators/foot.nix b/config/home-manager/terminal/emulators/foot.nix similarity index 100% rename from home/terminal/emulators/foot.nix rename to config/home-manager/terminal/emulators/foot.nix diff --git a/home/terminal/emulators/gnome-terminal.nix b/config/home-manager/terminal/emulators/gnome-terminal.nix similarity index 100% rename from home/terminal/emulators/gnome-terminal.nix rename to config/home-manager/terminal/emulators/gnome-terminal.nix diff --git a/home/terminal/emulators/wezterm.nix b/config/home-manager/terminal/emulators/wezterm.nix similarity index 100% rename from home/terminal/emulators/wezterm.nix rename to config/home-manager/terminal/emulators/wezterm.nix diff --git a/home/terminal/programs/bat.nix b/config/home-manager/terminal/programs/bat.nix similarity index 100% rename from home/terminal/programs/bat.nix rename to config/home-manager/terminal/programs/bat.nix diff --git a/home/terminal/programs/default.nix b/config/home-manager/terminal/programs/default.nix similarity index 100% rename from home/terminal/programs/default.nix rename to config/home-manager/terminal/programs/default.nix diff --git a/home/terminal/programs/direnv.nix b/config/home-manager/terminal/programs/direnv.nix similarity index 100% rename from home/terminal/programs/direnv.nix rename to config/home-manager/terminal/programs/direnv.nix diff --git a/home/terminal/programs/git.nix b/config/home-manager/terminal/programs/git.nix similarity index 100% rename from home/terminal/programs/git.nix rename to config/home-manager/terminal/programs/git.nix diff --git a/home/terminal/programs/gnupg.nix b/config/home-manager/terminal/programs/gnupg.nix similarity index 100% rename from home/terminal/programs/gnupg.nix rename to config/home-manager/terminal/programs/gnupg.nix diff --git a/home/terminal/programs/nix-index.nix b/config/home-manager/terminal/programs/nix-index.nix similarity index 100% rename from home/terminal/programs/nix-index.nix rename to config/home-manager/terminal/programs/nix-index.nix diff --git a/home/terminal/programs/tmux.nix b/config/home-manager/terminal/programs/tmux.nix similarity index 100% rename from home/terminal/programs/tmux.nix rename to config/home-manager/terminal/programs/tmux.nix diff --git a/home/terminal/programs/yazi.nix b/config/home-manager/terminal/programs/yazi.nix similarity index 100% rename from home/terminal/programs/yazi.nix rename to config/home-manager/terminal/programs/yazi.nix diff --git a/home/terminal/shell/default.nix b/config/home-manager/terminal/shell/default.nix similarity index 100% rename from home/terminal/shell/default.nix rename to config/home-manager/terminal/shell/default.nix diff --git a/home/terminal/shell/fish.nix b/config/home-manager/terminal/shell/fish.nix similarity index 100% rename from home/terminal/shell/fish.nix rename to config/home-manager/terminal/shell/fish.nix diff --git a/home/terminal/shell/nushell.nix b/config/home-manager/terminal/shell/nushell.nix similarity index 100% rename from home/terminal/shell/nushell.nix rename to config/home-manager/terminal/shell/nushell.nix diff --git a/home/terminal/shell/starship.nix b/config/home-manager/terminal/shell/starship.nix similarity index 100% rename from home/terminal/shell/starship.nix rename to config/home-manager/terminal/shell/starship.nix diff --git a/home/terminal/shell/zoxide.nix b/config/home-manager/terminal/shell/zoxide.nix similarity index 100% rename from home/terminal/shell/zoxide.nix rename to config/home-manager/terminal/shell/zoxide.nix diff --git a/system/core/boot.nix b/config/nixos/core/boot.nix similarity index 97% rename from system/core/boot.nix rename to config/nixos/core/boot.nix index 455d7db..3ec0598 100644 --- a/system/core/boot.nix +++ b/config/nixos/core/boot.nix @@ -1,4 +1,4 @@ -{pkgs, ...}: { +_: { boot = { loader = { timeout = 0; diff --git a/system/core/default.nix b/config/nixos/core/default.nix similarity index 100% rename from system/core/default.nix rename to config/nixos/core/default.nix diff --git a/system/core/lanzaboote.nix b/config/nixos/core/lanzaboote.nix similarity index 100% rename from system/core/lanzaboote.nix rename to config/nixos/core/lanzaboote.nix diff --git a/system/core/networking.nix b/config/nixos/core/networking.nix similarity index 100% rename from system/core/networking.nix rename to config/nixos/core/networking.nix diff --git a/system/core/security.nix b/config/nixos/core/security.nix similarity index 100% rename from system/core/security.nix rename to config/nixos/core/security.nix diff --git a/system/core/users.nix b/config/nixos/core/users.nix similarity index 51% rename from system/core/users.nix rename to config/nixos/core/users.nix index 33e12ca..8f9f138 100644 --- a/system/core/users.nix +++ b/config/nixos/core/users.nix @@ -1,7 +1,7 @@ -{ - users.users.nezia = { +{config, ...}: { + users.users.${config.local.systemVars.username} = { isNormalUser = true; - description = "Anthony Rodriguez"; + description = config.local.homeVars.fullName or "User"; extraGroups = [ "networkmanager" "audio" diff --git a/system/default.nix b/config/nixos/default.nix similarity index 100% rename from system/default.nix rename to config/nixos/default.nix diff --git a/system/hardware/fprintd.nix b/config/nixos/hardware/fprintd.nix similarity index 100% rename from system/hardware/fprintd.nix rename to config/nixos/hardware/fprintd.nix diff --git a/system/hardware/fwupd.nix b/config/nixos/hardware/fwupd.nix similarity index 100% rename from system/hardware/fwupd.nix rename to config/nixos/hardware/fwupd.nix diff --git a/system/hardware/printing.nix b/config/nixos/hardware/printing.nix similarity index 100% rename from system/hardware/printing.nix rename to config/nixos/hardware/printing.nix diff --git a/system/hardware/uni-sync.nix b/config/nixos/hardware/uni-sync.nix similarity index 100% rename from system/hardware/uni-sync.nix rename to config/nixos/hardware/uni-sync.nix diff --git a/system/hardware/via.nix b/config/nixos/hardware/via.nix similarity index 100% rename from system/hardware/via.nix rename to config/nixos/hardware/via.nix diff --git a/system/network/default.nix b/config/nixos/network/default.nix similarity index 77% rename from system/network/default.nix rename to config/nixos/network/default.nix index ace8d35..bd330cd 100644 --- a/system/network/default.nix +++ b/config/nixos/network/default.nix @@ -1,5 +1,6 @@ -{ +{config, ...}: { networking = { + inherit (config.local.systemVars) hostName; networkmanager = { enable = true; dns = "systemd-resolved"; diff --git a/system/nix/default.nix b/config/nixos/nix/default.nix similarity index 100% rename from system/nix/default.nix rename to config/nixos/nix/default.nix diff --git a/system/nix/nh.nix b/config/nixos/nix/nh.nix similarity index 100% rename from system/nix/nh.nix rename to config/nixos/nix/nh.nix diff --git a/system/nix/nixpkgs.nix b/config/nixos/nix/nixpkgs.nix similarity index 100% rename from system/nix/nixpkgs.nix rename to config/nixos/nix/nixpkgs.nix diff --git a/system/programs/default.nix b/config/nixos/programs/default.nix similarity index 100% rename from system/programs/default.nix rename to config/nixos/programs/default.nix diff --git a/system/programs/fonts.nix b/config/nixos/programs/fonts.nix similarity index 100% rename from system/programs/fonts.nix rename to config/nixos/programs/fonts.nix diff --git a/system/programs/games.nix b/config/nixos/programs/games.nix similarity index 100% rename from system/programs/games.nix rename to config/nixos/programs/games.nix diff --git a/system/programs/gnome.nix b/config/nixos/programs/gnome.nix similarity index 100% rename from system/programs/gnome.nix rename to config/nixos/programs/gnome.nix diff --git a/system/programs/home-manager.nix b/config/nixos/programs/home-manager.nix similarity index 100% rename from system/programs/home-manager.nix rename to config/nixos/programs/home-manager.nix diff --git a/system/programs/hyprland.nix b/config/nixos/programs/hyprland.nix similarity index 100% rename from system/programs/hyprland.nix rename to config/nixos/programs/hyprland.nix diff --git a/system/programs/kde.nix b/config/nixos/programs/kde.nix similarity index 100% rename from system/programs/kde.nix rename to config/nixos/programs/kde.nix diff --git a/system/programs/niri/default.nix b/config/nixos/programs/niri/default.nix similarity index 100% rename from system/programs/niri/default.nix rename to config/nixos/programs/niri/default.nix diff --git a/system/services/brightness.nix b/config/nixos/services/brightness.nix similarity index 100% rename from system/services/brightness.nix rename to config/nixos/services/brightness.nix diff --git a/system/services/default.nix b/config/nixos/services/default.nix similarity index 100% rename from system/services/default.nix rename to config/nixos/services/default.nix diff --git a/system/services/docker.nix b/config/nixos/services/docker.nix similarity index 100% rename from system/services/docker.nix rename to config/nixos/services/docker.nix diff --git a/system/services/documentation.nix b/config/nixos/services/documentation.nix similarity index 100% rename from system/services/documentation.nix rename to config/nixos/services/documentation.nix diff --git a/system/services/flatpak.nix b/config/nixos/services/flatpak.nix similarity index 100% rename from system/services/flatpak.nix rename to config/nixos/services/flatpak.nix diff --git a/system/services/forgejo.nix b/config/nixos/services/forgejo.nix similarity index 100% rename from system/services/forgejo.nix rename to config/nixos/services/forgejo.nix diff --git a/system/services/gnome.nix b/config/nixos/services/gnome.nix similarity index 100% rename from system/services/gnome.nix rename to config/nixos/services/gnome.nix diff --git a/system/services/gnupg.nix b/config/nixos/services/gnupg.nix similarity index 100% rename from system/services/gnupg.nix rename to config/nixos/services/gnupg.nix diff --git a/system/services/greetd.nix b/config/nixos/services/greetd.nix similarity index 95% rename from system/services/greetd.nix rename to config/nixos/services/greetd.nix index 384235c..b96ec92 100644 --- a/system/services/greetd.nix +++ b/config/nixos/services/greetd.nix @@ -1,4 +1,5 @@ { + config, inputs, lib, pkgs, @@ -36,7 +37,7 @@ in { settings = { default_session = { command = "${Hyprland} --config ${hyprlandConfig}"; - user = "nezia"; + user = config.local.systemVars.username; }; }; }; diff --git a/system/services/kanata.nix b/config/nixos/services/kanata.nix similarity index 100% rename from system/services/kanata.nix rename to config/nixos/services/kanata.nix diff --git a/system/services/keyd.nix b/config/nixos/services/keyd.nix similarity index 100% rename from system/services/keyd.nix rename to config/nixos/services/keyd.nix diff --git a/system/services/kmscon.nix b/config/nixos/services/kmscon.nix similarity index 100% rename from system/services/kmscon.nix rename to config/nixos/services/kmscon.nix diff --git a/system/services/logind.nix b/config/nixos/services/logind.nix similarity index 100% rename from system/services/logind.nix rename to config/nixos/services/logind.nix diff --git a/system/services/mail.nix b/config/nixos/services/mail.nix similarity index 100% rename from system/services/mail.nix rename to config/nixos/services/mail.nix diff --git a/system/services/pipewire.nix b/config/nixos/services/pipewire.nix similarity index 100% rename from system/services/pipewire.nix rename to config/nixos/services/pipewire.nix diff --git a/system/services/portfolio.nix b/config/nixos/services/portfolio.nix similarity index 100% rename from system/services/portfolio.nix rename to config/nixos/services/portfolio.nix diff --git a/system/services/power.nix b/config/nixos/services/power.nix similarity index 100% rename from system/services/power.nix rename to config/nixos/services/power.nix diff --git a/system/services/searx.nix b/config/nixos/services/searx.nix similarity index 100% rename from system/services/searx.nix rename to config/nixos/services/searx.nix diff --git a/system/services/syncthing.nix b/config/nixos/services/syncthing.nix similarity index 100% rename from system/services/syncthing.nix rename to config/nixos/services/syncthing.nix diff --git a/flake.lock b/flake.lock index b704dc6..e3e1042 100644 --- a/flake.lock +++ b/flake.lock @@ -3234,7 +3234,6 @@ "nvf": "nvf", "plasma-manager": "plasma-manager", "portfolio": "portfolio", - "systems": "systems_7", "treefmt-nix": "treefmt-nix" } }, @@ -3391,21 +3390,6 @@ "type": "github" } }, - "systems_7": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, "treefmt-nix": { "inputs": { "nixpkgs": "nixpkgs_9" diff --git a/flake.nix b/flake.nix index cdf4cbc..01c9b3d 100644 --- a/flake.nix +++ b/flake.nix @@ -4,13 +4,12 @@ outputs = { self, nixpkgs, - systems, agenix, deploy-rs, treefmt-nix, ... } @ inputs: let - eachSystem = f: nixpkgs.lib.genAttrs (import systems) (system: f nixpkgs.legacyPackages.${system}); + eachSystem = f: nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed (system: f nixpkgs.legacyPackages.${system}); treefmtEval = eachSystem (pkgs: treefmt-nix.lib.evalModule pkgs ./treefmt.nix); in { devShells = eachSystem (pkgs: { @@ -25,14 +24,13 @@ }); formatter = eachSystem (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper); nixosConfigurations = import ./hosts {inherit inputs;}; - packages = eachSystem (pkgs: import ./pkgs {inherit inputs pkgs;}); - deploy.nodes = import ./nodes {inherit inputs;}; + packages = eachSystem (pkgs: import ./shared/pkgs {inherit inputs pkgs;}); + deploy.nodes = import ./nodes.nix {inherit inputs;}; checks = builtins.mapAttrs (_: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib; }; inputs = { # nix related nixpkgs.url = "nixpkgs/nixos-unstable"; - systems.url = "github:nix-systems/default-linux"; nixos-hardware.url = "github:NixOS/nixos-hardware"; lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.1"; diff --git a/hosts/default.nix b/hosts/default.nix index 94255dc..4d5f1fd 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -1,15 +1,14 @@ {inputs, ...}: let - lib' = import ../lib; + lib' = import ../shared/lib; mkSystem = args: inputs.nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs lib';}; - modules = args.modules or []; + modules = [../shared/nixosModules] ++ (args.modules or []); }; in { vamos = mkSystem { modules = [ ./vamos - ../modules inputs.nixos-hardware.nixosModules.framework-13-7040-amd ]; }; @@ -17,7 +16,6 @@ in { solaire = mkSystem { modules = [ ./solaire - ../modules ]; }; diff --git a/system/hardware/nvidia.nix b/hosts/solaire/config/nvidia.nix similarity index 100% rename from system/hardware/nvidia.nix rename to hosts/solaire/config/nvidia.nix diff --git a/hosts/solaire/modules/theme.nix b/hosts/solaire/config/theme.nix similarity index 85% rename from hosts/solaire/modules/theme.nix rename to hosts/solaire/config/theme.nix index 02b4baf..eb9cd60 100644 --- a/hosts/solaire/modules/theme.nix +++ b/hosts/solaire/config/theme.nix @@ -1,5 +1,5 @@ _: { - theme = { + local.style = { enable = true; wallpaper = ../../../assets/wallpapers/lucy-edgerunners-wallpaper.jpg; }; diff --git a/hosts/solaire/default.nix b/hosts/solaire/default.nix index 76a7658..3a7d26d 100644 --- a/hosts/solaire/default.nix +++ b/hosts/solaire/default.nix @@ -3,54 +3,63 @@ specialArgs, ... }: let - system = "${inputs.self}/system"; - home = "${inputs.self}/home"; + nixos = "${inputs.self}/config/nixos"; + hm = "${inputs.self}/config/home-manager"; in { + local.systemVars = { + hostName = "solaire"; + username = "nezia"; + }; + + local.homeVars = { + fullName = "Anthony Rodriguez"; + email = "anthony@nezia.dev"; + }; + imports = [ ./hardware-configuration.nix - ./modules + ./config/nvidia.nix + ./config/theme.nix - system - "${system}/hardware/uni-sync.nix" + nixos + "${nixos}/hardware/uni-sync.nix" - "${system}/programs/games.nix" - "${system}/hardware/nvidia.nix" + "${nixos}/programs/games.nix" - "${system}/services/logind.nix" - "${system}/services/greetd.nix" + "${nixos}/services/logind.nix" + "${nixos}/services/greetd.nix" - "${system}/programs/hyprland.nix" - "${system}/services/gnome.nix" + "${nixos}/programs/hyprland.nix" + "${nixos}/services/gnome.nix" - "${system}/services/documentation.nix" + "${nixos}/services/documentation.nix" - "${system}/services/flatpak.nix" + "${nixos}/services/flatpak.nix" ]; home-manager = { users.nezia.imports = [ - "${home}" - "${home}/services/udiskie.nix" - "${home}/programs/games" + hm + "${hm}/services/udiskie.nix" + "${hm}/programs/games" - "${home}/programs/waybar" - "${home}/programs/fuzzel.nix" - "${home}/programs/hypr" + "${hm}/programs/waybar" + "${hm}/programs/fuzzel.nix" + "${hm}/programs/hypr" - "${home}/services/swaync" - "${home}/programs/swaybg.nix" - "${home}/programs/swaylock.nix" + "${hm}/services/swaync" + "${hm}/programs/swaybg.nix" + "${hm}/programs/swaylock.nix" - "${home}/terminal/emulators/foot.nix" + "${hm}/terminal/emulators/foot.nix" - "${home}/services/flatpak.nix" - "${home}/services/syncthing.nix" + "${hm}/services/flatpak.nix" + "${hm}/services/syncthing.nix" - "${home}/programs/editors/neovim.nix" + "${hm}/programs/editors/neovim.nix" ]; extraSpecialArgs = specialArgs; }; - networking.hostName = "solaire"; environment.variables.FLAKE = "/home/nezia/.dotfiles"; } diff --git a/hosts/solaire/modules/default.nix b/hosts/solaire/modules/default.nix deleted file mode 100644 index a661430..0000000 --- a/hosts/solaire/modules/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - imports = [./theme.nix]; -} diff --git a/hosts/vamos/modules/theme.nix b/hosts/vamos/config/theme.nix similarity index 94% rename from hosts/vamos/modules/theme.nix rename to hosts/vamos/config/theme.nix index 79c955f..0276822 100644 --- a/hosts/vamos/modules/theme.nix +++ b/hosts/vamos/config/theme.nix @@ -1,5 +1,5 @@ {pkgs, ...}: { - theme = { + local.style = { enable = true; wallpaper = pkgs.fetchurl { url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/e0cf0eb237dc5baba86661a3572b20a6183c1876/wallpapers/nix-wallpaper-nineish-catppuccin-frappe.png?raw=true"; diff --git a/hosts/vamos/default.nix b/hosts/vamos/default.nix index 26deb2d..938afef 100644 --- a/hosts/vamos/default.nix +++ b/hosts/vamos/default.nix @@ -3,53 +3,62 @@ specialArgs, ... }: let - system = "${inputs.self}/system"; - home = "${inputs.self}/home"; + nixos = "${inputs.self}/config/nixos"; + hm = "${inputs.self}/config/home-manager"; in { + local.systemVars = { + hostName = "vamos"; + username = "nezia"; + }; + + local.homeVars = { + fullName = "Anthony Rodriguez"; + email = "anthony@nezia.dev"; + }; + imports = [ ./hardware-configuration.nix - ./modules + ./config/theme.nix - "${system}" - "${system}/core/lanzaboote.nix" + "${nixos}" + "${nixos}/core/lanzaboote.nix" - "${system}/hardware/fprintd.nix" - "${system}/services/power.nix" - "${system}/services/brightness.nix" + "${nixos}/hardware/fprintd.nix" + "${nixos}/services/power.nix" + "${nixos}/services/brightness.nix" - "${system}/services/logind.nix" - "${system}/services/greetd.nix" - "${system}/services/kanata.nix" + "${nixos}/services/logind.nix" + "${nixos}/services/greetd.nix" + "${nixos}/services/kanata.nix" - "${system}/programs/hyprland.nix" - "${system}/services/gnome.nix" - "${system}/services/mail.nix" + "${nixos}/programs/hyprland.nix" + "${nixos}/services/gnome.nix" + "${nixos}/services/mail.nix" - "${system}/services/documentation.nix" + "${nixos}/services/documentation.nix" ]; home-manager = { users.nezia.imports = [ - "${home}" - "${home}/services/udiskie.nix" + "${hm}" + "${hm}/services/udiskie.nix" - "${home}/programs/hypr" - "${home}/programs/waybar" - "${home}/programs/fuzzel.nix" + "${hm}/programs/hypr" + "${hm}/programs/waybar" + "${hm}/programs/fuzzel.nix" - "${home}/services/swaync" - "${home}/programs/swaybg.nix" - "${home}/programs/wlogout.nix" + "${hm}/services/swaync" + "${hm}/programs/swaybg.nix" + "${hm}/programs/wlogout.nix" - "${home}/services/syncthing.nix" + "${hm}/services/syncthing.nix" - "${home}/programs/editors/neovim.nix" + "${hm}/programs/editors/neovim.nix" - "${home}/terminal/emulators/foot.nix" + "${hm}/terminal/emulators/foot.nix" ]; extraSpecialArgs = specialArgs; }; - networking.hostName = "vamos"; environment.variables.FLAKE = "/home/nezia/.dotfiles"; } diff --git a/hosts/vamos/modules/default.nix b/hosts/vamos/modules/default.nix deleted file mode 100644 index a661430..0000000 --- a/hosts/vamos/modules/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - imports = [./theme.nix]; -} diff --git a/modules/default.nix b/modules/default.nix deleted file mode 100644 index eecd825..0000000 --- a/modules/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - imports = [./theme]; -} diff --git a/modules/theme/default.nix b/modules/theme/default.nix deleted file mode 100644 index 8ac4d08..0000000 --- a/modules/theme/default.nix +++ /dev/null @@ -1,682 +0,0 @@ -{ - inputs, - config, - lib, - lib', - pkgs, - ... -}: let - inherit (lib) mkEnableOption mkOption mkIf attrNames; - inherit (lib.strings) removePrefix; - inherit (lib.types) path package enum; - - inherit (lib') generateGtkColors; - - cfg = config.theme; -in { - imports = [ - ./gtk.nix - inputs.niri.nixosModules.niri - inputs.hyprland.nixosModules.default - ]; - options.theme = { - enable = mkEnableOption "theme"; - schemeName = mkOption { - description = '' - Name of the tinted-theming color scheme to use. - ''; - type = enum (attrNames inputs.basix.schemeData.base16); - example = "catppuccin-mocha"; - default = "catppuccin-mocha"; - }; - - wallpaper = mkOption { - description = '' - Location of the wallpaper that will be used throughout the system. - ''; - type = path; - example = lib.literalExpression "./wallpaper.png"; - default = pkgs.fetchurl { - url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/e0cf0eb237dc5baba86661a3572b20a6183c1876/wallpapers/nix-wallpaper-nineish-catppuccin-frappe.png?raw=true"; - hash = "sha256-/HAtpGwLxjNfJvX5/4YZfM8jPNStaM3gisK8+ImRmQ4="; - }; - }; - - cursorTheme = { - name = mkOption { - description = '' - Name of the cursor theme. - ''; - default = "phinger-cursors-dark"; - }; - package = mkOption { - type = package; - description = '' - Package providing the cursor theme. - ''; - default = pkgs.phinger-cursors; - }; - size = mkOption { - description = '' - Size of the cursor. - ''; - default = 32; - }; - }; - - avatar = mkOption { - description = '' - Path to an avatar image (used for hyprlock). - ''; - default = ../../assets/avatar.png; - }; - }; - config = let - scheme = inputs.basix.schemeData.base16.${config.theme.schemeName}; - in - mkIf cfg.enable - { - home-manager.users.nezia = { - home.pointerCursor = { - inherit (config.theme.cursorTheme) name package size; - x11.enable = true; - gtk.enable = true; - }; - - services.swaync.style = - generateGtkColors lib scheme.palette; - - wayland.windowManager.hyprland.settings = { - env = [ - "HYPRCURSOR_THEME,phinger-cursors-light" - "HYPRCURSOR_SIZE,32" - "XCURSOR_SIZE,32" - ]; - general = { - border_size = 4; - "col.active_border" = "rgb(${removePrefix "#" scheme.palette.base0E})"; - }; - decoration = { - rounding = 10; - blur.enabled = true; - }; - }; - - programs = { - hyprlock = { - settings = { - background = [ - { - path = "screenshot"; - blur_passes = 3; - blur_size = 8; - } - ]; - - general = { - disable_loading_bar = true; - hide_cursor = true; - }; - - label = [ - { - monitor = ""; - text = "Layout: $LAYOUT"; - font_size = 25; - color = scheme.palette.base05; - - position = "30, -30"; - halign = "left"; - valign = "top"; - } - { - monitor = ""; - text = "$TIME"; - font_size = 90; - color = scheme.palette.base05; - - position = "-30, 0"; - halign = "right"; - valign = "top"; - } - { - monitor = ""; - text = "cmd[update:43200000] date +\"%A, %d %B %Y\""; - font_size = 25; - color = scheme.palette.base05; - - position = "-30, -150"; - halign = "right"; - valign = "top"; - } - ]; - - image = { - monitor = ""; - path = "${cfg.avatar}"; # Replace with your avatar path - size = 100; - border_color = scheme.palette.base0D; - - position = "0, 75"; - halign = "center"; - valign = "center"; - }; - - input-field = [ - { - monitor = ""; - - size = "300, 60"; - outline_thickness = 4; - dots_size = 0.2; - dots_spacing = 0.2; - dots_center = true; - - outer_color = scheme.palette.base0D; - inner_color = scheme.palette.base02; - font_color = scheme.palette.base05; - - fade_on_empty = false; - placeholder_text = "󰌾 Logged in as $USER"; - - hide_input = false; - check_color = scheme.palette.base0D; - fail_color = scheme.palette.base08; - - fail_text = "$FAIL ($ATTEMPTS)"; - capslock_color = scheme.palette.base0E; - - position = "0, -47"; - halign = "center"; - valign = "center"; - } - ]; - }; - }; - niri = { - settings = { - layout.focus-ring.active.color = scheme.palette.base0D; - cursor = { - inherit (config.theme.cursorTheme) size; - theme = config.theme.cursorTheme.name; - }; - }; - }; - - foot.settings.colors = let - # because someone thought this was a great idea: https://github.com/tinted-theming/schemes/commit/61058a8d2e2bd4482b53d57a68feb56cdb991f0b - palette = builtins.mapAttrs (_: color: removePrefix "#" color) scheme.palette; - in { - background = palette.base00; - foreground = palette.base05; - - regular0 = palette.base00; - regular1 = palette.base08; - regular2 = palette.base0B; - regular3 = palette.base0A; - regular4 = palette.base0D; - regular5 = palette.base0E; - regular6 = palette.base0C; - regular7 = palette.base05; - - bright0 = palette.base02; - bright1 = palette.base08; - bright2 = palette.base0B; - bright3 = palette.base0A; - bright4 = palette.base0D; - bright5 = palette.base0E; - bright6 = palette.base0C; - bright7 = palette.base07; - - "16" = palette.base09; - "17" = palette.base0F; - "18" = palette.base01; - "19" = palette.base02; - "20" = palette.base04; - "21" = palette.base06; - }; - - waybar.style = - generateGtkColors lib scheme.palette; - - fuzzel.settings = { - main = { - font = "sans-serif:size=16"; - }; - colors = { - background = "${scheme.palette.base01}f2"; - text = "${scheme.palette.base05}ff"; - match = "${scheme.palette.base0E}ff"; - selection = "${scheme.palette.base03}ff"; - selection-text = "${scheme.palette.base06}ff"; - selection-match = "${scheme.palette.base0E}ff"; - border = "${scheme.palette.base0E}ff"; - }; - }; - - swaylock.settings = { - inside-color = scheme.palette.base01; - line-color = scheme.palette.base01; - ring-color = scheme.palette.base05; - text-color = scheme.palette.base05; - - inside-clear-color = scheme.palette.base0A; - line-clear-color = scheme.palette.base0A; - ring-clear-color = scheme.palette.base00; - text-clear-color = scheme.palette.base00; - - inside-caps-lock-color = scheme.palette.base03; - line-caps-lock-color = scheme.palette.base03; - ring-caps-lock-color = scheme.palette.base00; - text-caps-lock-color = scheme.palette.base00; - - inside-ver-color = scheme.palette.base0D; - line-ver-color = scheme.palette.base0D; - ring-ver-color = scheme.palette.base00; - text-ver-color = scheme.palette.base00; - - inside-wrong-color = scheme.palette.base08; - line-wrong-color = scheme.palette.base08; - ring-wrong-color = scheme.palette.base00; - text-wrong-color = scheme.palette.base00; - - caps-lock-bs-hl-color = scheme.palette.base08; - caps-lock-key-hl-color = scheme.palette.base0D; - bs-hl-color = scheme.palette.base08; - key-hl-color = scheme.palette.base0D; - - separator-color = "#00000000"; # transparent - layout-bg-color = "#00000050"; # semi-transparent black - }; - - zathura.options = { - default-fg = scheme.palette.base01; - default-bg = scheme.palette.base00; - - completion-bg = scheme.palette.base01; - completion-fg = scheme.palette.base0D; - completion-highlight-bg = scheme.palette.base0D; - completion-highlight-fg = scheme.palette.base07; - - statusbar-fg = scheme.palette.base04; - statusbar-bg = scheme.palette.base02; - - notification-bg = scheme.palette.base00; - notification-fg = scheme.palette.base07; - notification-error-bg = scheme.palette.base00; - notification-error-fg = scheme.palette.base08; - notification-warning-bg = scheme.palette.base00; - notification-warning-fg = scheme.palette.base0A; - - inputbar-fg = scheme.palette.base07; - inputbar-bg = scheme.palette.base00; - - recolor = false; - recolor-keephue = false; - recolor-lightcolor = scheme.palette.base00; - recolor-darkcolor = scheme.palette.base06; - - highlight-color = scheme.palette.base0A; - highlight-active-color = scheme.palette.base0D; - }; - - gnome-terminal.profile = { - "4621184a-b921-42cf-80a0-7784516606f2".colors = { - backgroundColor = "#${scheme.palette.base00}"; - foregroundColor = "#${scheme.palette.base05}" "#${scheme.palette.base05}"; - palette = builtins.attrValues (builtins.mapAttrs (_: color: "#${color}") scheme.palette); - }; - }; - - fish.interactiveShellInit = '' - set fish_cursor_default block blink - set fish_cursor_insert line blink - set fish_cursor_replace_one underscore blink - set fish_cursor_visual block - - set -x fish_color_autosuggestion brblack - set -x fish_color_cancel -r - set -x fish_color_command brgreen - set -x fish_color_comment brmagenta - set -x fish_color_cwd green - set -x fish_color_cwd_root red - set -x fish_color_end brmagenta - set -x fish_color_error brred - set -x fish_color_escape brcyan - set -x fish_color_history_current --bold - set -x fish_color_host normal - set -x fish_color_host_remote yellow - set -x fish_color_match --background=brblue - set -x fish_color_normal normal - set -x fish_color_operator cyan - set -x fish_color_param brblue - set -x fish_color_quote yellow - set -x fish_color_redirection bryellow - set -x fish_color_search_match 'bryellow' '--background=brblack' - set -x fish_color_selection 'white' '--bold' '--background=brblack' - set -x fish_color_status red - set -x fish_color_user brgreen - set -x fish_color_valid_path --underline - set -x fish_pager_color_completion normal - set -x fish_pager_color_description yellow - set -x fish_pager_color_prefix 'white' '--bold' '--underline' - set -x fish_pager_color_progress 'brwhite' '--background=cyan' - ''; - - starship.settings = { - directory = { - style = "bold yellow"; - }; - character = { - format = "$symbol "; - success_symbol = "[➜](bold green)"; - error_symbol = "[✗](bold red)"; - vicmd_symbol = "[](bold green)"; - }; - cmd_duration = { - style = "yellow"; - format = "[ $duration]($style)"; - }; - }; - - nvf.settings.vim.theme = { - enable = true; - name = "base16"; - base16-colors = scheme.palette; - }; - }; - xdg.configFile."equibop/themes/midnight-base16.css".text = with scheme.palette; '' - /** - * @name Midnight-base16 - * @description A dark, rounded discord theme. Updated to use base16 colors. - * @author refact0r - * @version 1.6.2 - * @invite nz87hXyvcy - * @website https://github.com/refact0r/midnight-discord - * @source https://github.com/refact0r/midnight-discord/blob/master/midnight.theme.css - * @authorId 508863359777505290 - * @authorLink https://www.refact0r.dev - */ - - /* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */ - - @import url('https://refact0r.github.io/midnight-discord/midnight.css'); - - /* customize things here */ - :root { - /* font, change to 'gg sans' for default discord font*/ - --font: 'gg sans'; - - /* top left corner text */ - --corner-text: '${scheme.name}'; - - /* color of status indicators and window controls */ - --online-indicator: ${base0B}; /* change to #23a55a for default green */ - --dnd-indicator: ${base08}; /* change to #f13f43 for default red */ - --idle-indicator: ${base0A}; /* change to #f0b232 for default yellow */ - --streaming-indicator: ${base0E}; /* change to #593695 for default purple */ - - /* accent colors */ - --accent-1: ${base0D}; /* links */ - --accent-2: ${base0E}; /* general unread/mention elements, some icons when active */ - --accent-3: ${base0E}; /* accent buttons */ - --accent-4: ${base03}; /* accent buttons when hovered */ - --accent-5: ${base07}; /* accent buttons when clicked */ - --mention: ${base00}1a; /* mentions & mention messages */ - --mention-hover: ${base00}0d; /* mentions & mention messages when hovered */ - - /* text colors */ - --text-0: var(--bg-4); /* text on colored elements */ - --text-1: ${base06}; /* other normally white text */ - --text-2: ${base06}; /* headings and important text */ - --text-3: ${base05}; /* normal text */ - --text-4: ${base05}; /* icon buttons and channels */ - --text-5: ${base04}; /* muted channels/chats and timestamps */ - - /* background and dark colors */ - --bg-1: ${base0E}; /* dark buttons when clicked */ - --bg-2: ${base02}; /* dark buttons */ - --bg-3: ${base01}; /* spacing, secondary elements */ - --bg-4: ${base00}; /* main background color */ - --hover: ${base03}1a; /* channels and buttons when hovered */ - --active: ${base03}33; /* channels and buttons when clicked or selected */ - --message-hover: #0000001a; /* messages when hovered */ - - /* amount of spacing and padding */ - --spacing: 12px; - - /* animations */ - /* ALL ANIMATIONS CAN BE DISABLED WITH REDUCED MOTION IN DISCORD SETTINGS */ - --list-item-transition: 0.2s ease; /* channels/members/settings hover transition */ - --unread-bar-transition: 0.2s ease; /* unread bar moving into view transition */ - --moon-spin-transition: 0.4s ease; /* moon icon spin */ - --icon-spin-transition: 1s ease; /* round icon button spin (settings, emoji, etc.) */ - - /* corner roundness (border-radius) */ - --roundness-xl: 22px; /* roundness of big panel outer corners */ - --roundness-l: 20px; /* popout panels */ - --roundness-m: 16px; /* smaller panels, images, embeds */ - --roundness-s: 12px; /* members, settings inputs */ - --roundness-xs: 10px; /* channels, buttons */ - --roundness-xxs: 8px; /* searchbar, small elements */ - - /* direct messages moon icon */ - /* change to block to show, none to hide */ - --discord-icon: none; /* discord icon */ - --moon-icon: block; /* moon icon */ - --moon-icon-url: url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Font_Awesome_5_solid_moon.svg'); /* custom icon url */ - --moon-icon-size: auto; - - /* filter uncolorable elements to fit theme */ - /* (just set to none, they're too much work to configure) */ - --login-bg-filter: saturate(0.3) hue-rotate(-15deg) brightness(0.4); /* login background artwork */ - --green-to-accent-3-filter: hue-rotate(56deg) saturate(1.43); /* add friend page explore icon */ - --blurple-to-accent-3-filter: hue-rotate(304deg) saturate(0.84) brightness(1.2); /* add friend page school icon */ - } - - /* Selected chat/friend text */ - .selected_f5eb4b, - .selected_f6f816 .link_d8bfb3 { - color: var(--text-0) !important; - background: var(--accent-3) !important; - } - - .selected_f6f816 .link_d8bfb3 * { - color: var(--text-0) !important; - fill: var(--text-0) !important; - } - ''; - - # based on https://github.com/rose-pine/tidal. adapted to work with base16 colors. - xdg.configFile."tidal-hifi/themes/base16.css".text = with scheme.palette; '' - :root { - --glass-white-1: ${base05}; - --glass-white-1-hover: ${base06}; - --glass-white-2: ${base07}; - --glass-white-2-hover: ${base08}; - --glass-white-3: ${base07}; - --glass-white-4: ${base04}; - --glass-white-5: ${base04}; - --glass-white-6: ${base05}; - --snow-white: ${base07}; - --snow-white-hover: ${base08}; - --gray-4: ${base00}; - --gray-5: ${base02}; - --gray-6: ${base03}; - --gray-7: ${base04}; - --cyan-blue: ${base0D}; - --cyan-blue-hover: ${base0C}; - --glass-cyan-1: ${base04}; - --glass-cyan-2: ${base05}; - --glass-cyan-3: ${base06}; - --master-gold: ${base0E}; - --master-gold-hover: ${base08}; - --glass-master-gold: ${base05}; - --glass-master-gold-2: ${base06}; - --raspberry-pink: ${base08}; - --raspberry-pink-lighter: ${base09}; - --black: ${base00}; - --midnight-black: ${base00}; - --controls-overlay: ${base03}; - --duration-overlay: ${base02}; - --background-dark: ${base00}; - --hoverLighten: brightness(130%); - --hoverDarken: brightness(70%); - --hoverTransition: filter 0.15s ease; - --scrollbar-track: ${base03}; - --scrollbar-thumb: ${base00}; - --lighten-25: ${base01}; - --red-alert: ${base08}; - --user-profile-linear-gradient: linear-gradient(160deg,${base0D} 1.22%,${base0C} 40.51%,${base00} 79.07%); - --wave-border-radius--none: 0px; - --wave-border-radius--extra-small: 4px; - --wave-border-radius--small: 8px; - --wave-border-radius--regular: 12px; - --wave-border-radius--full: 1000px; - --wave-color-material-dark: ${base00}80; - --wave-color-material-light: ${base04}33; - --wave-color-opacity-accent-dark-ultra-thick: ${base0C}cc; - --wave-color-opacity-accent-darkest-ultra-thick: ${base01}; - --wave-color-opacity-accent-fill-regular: ${base0C}66; - --wave-color-opacity-accent-fill-thin: ${base0C}33; - --wave-color-opacity-accent-fill-ultra-thick: ${base0C}cc; - --wave-color-opacity-accent-fill-ultra-thin: ${base0C}1a; - --wave-color-opacity-base-bright-thick: ${base00}99; - --wave-color-opacity-base-bright-thin: ${base00}33; - --wave-color-opacity-base-bright-transparent: ${base00}; - --wave-color-opacity-base-bright-ultra-thick: ${base00}cc; - --wave-color-opacity-base-brighter-ultra-thick: ${base01}cc; - --wave-color-opacity-base-brightest-regular: ${base02}66; - --wave-color-opacity-base-brightest-thin: ${base02}33; - --wave-color-opacity-base-brightest-ultra-thin: ${base02}1a; - --wave-color-opacity-base-fill-regular: ${base00}66; - --wave-color-opacity-base-fill-thick: ${base00}99; - --wave-color-opacity-base-fill-thin: ${base00}33; - --wave-color-opacity-base-fill-transparent: #000; - --wave-color-opacity-base-fill-ultra-thick: ${base00}cc; - --wave-color-opacity-base-fill-ultra-thin: ${base00}1a; - --wave-color-opacity-contrast-fill-regular: ${base07}66; - --wave-color-opacity-contrast-fill-thick: ${base07}99; - --wave-color-opacity-contrast-fill-thin: ${base07}33; - --wave-color-opacity-contrast-fill-transparent: #fff; - --wave-color-opacity-contrast-fill-ultra-thick: ${base07}cc; - --wave-color-opacity-contrast-fill-ultra-thin: ${base07}1a; - --wave-color-opacity-rainbow-blue-thin: ${base0D}33; - --wave-color-opacity-rainbow-yellow-fill-regular: ${base0E}66; - --wave-color-opacity-rainbow-yellow-fill-thin: ${base0E}33; - --wave-color-opacity-rainbow-yellow-fill-ultra-thick: ${base0E}cc; - --wave-color-opacity-rainbow-yellow-fill-ultra-thin: ${base0E}1a; - --wave-color-opacity-special-fill-regular: ${base0E}66; - --wave-color-opacity-special-fill-thin: ${base0E}33; - --wave-color-opacity-special-fill-ultra-thick: ${base0E}cc; - --wave-color-opacity-special-fill-ultra-thin: ${base0E}1a; - --wave-color-services-facebook: ${base0D}; - --wave-color-services-instagram-red: ${base08}; - --wave-color-services-mtn: ${base0E}; - --wave-color-services-musix-orange: ${base09}; - --wave-color-services-musix-pink: ${base0E}; - --wave-color-services-play: ${base0C}; - --wave-color-services-plus: ${base0B}; - --wave-color-services-snapchat: ${base0A}; - --wave-color-services-sprint: ${base0A}; - --wave-color-services-t-mobile: ${base08}; - --wave-color-services-tik-tok-blue: ${base0D}; - --wave-color-services-tik-tok-red: ${base08}; - --wave-color-services-twitter: ${base0D}; - --wave-color-services-viacom-1: ${base0D}; - --wave-color-services-viacom-2: ${base0E}; - --wave-color-services-viacom-3: ${base08}; - --wave-color-services-viacom-4: ${base09}; - --wave-color-services-viacom-5: ${base0E}; - --wave-color-services-vivo: ${base0E}; - --wave-color-services-vodafone: ${base08}; - --wave-color-services-waze: ${base0D}; - --wave-color-solid-accent-bright: ${base0D}; - --wave-color-solid-accent-brighter: ${base0D}; - --wave-color-solid-accent-dark: ${base0C}; - --wave-color-solid-accent-darker: ${base01}; - --wave-color-solid-accent-darkest: ${base00}; - --wave-color-solid-accent-fill: ${base0D}; - --wave-color-solid-base-bright: ${base00}; - --wave-color-solid-base-brighter: ${base01}; - --wave-color-solid-base-brightest: ${base02}; - --wave-color-solid-base-fill: ${base00}; - --wave-color-solid-contrast-dark: ${base07}; - --wave-color-solid-contrast-darker: ${base06}; - --wave-color-solid-contrast-darkest: ${base05}; - --wave-color-solid-contrast-fill: ${base07}; - --wave-color-solid-rainbow-blue-fill: ${base0D}; - --wave-color-solid-rainbow-green-brighter: ${base0D}; - --wave-color-solid-rainbow-green-dark: ${base0C}; - --wave-color-solid-rainbow-green-darker: ${base0C}; - --wave-color-solid-rainbow-green-darkest: ${base01}; - --wave-color-solid-rainbow-green-fill: ${base0D}; - --wave-color-solid-rainbow-orange-fill: ${base09}; - --wave-color-solid-rainbow-purple-fill: ${base0E}; - --wave-color-solid-rainbow-red-bright: ${base08}; - --wave-color-solid-rainbow-red-brighter: ${base08}; - --wave-color-solid-rainbow-red-dark: ${base09}; - --wave-color-solid-rainbow-red-darker: ${base01}; - --wave-color-solid-rainbow-red-darkest: ${base00}; - --wave-color-solid-rainbow-red-fill: ${base08}; - --wave-color-solid-rainbow-yellow-bright: ${base0A}; - --wave-color-solid-rainbow-yellow-brighter: ${base06}; - --wave-color-solid-rainbow-yellow-dark: ${base09}; - --wave-color-solid-rainbow-yellow-darker: ${base01}; - --wave-color-solid-rainbow-yellow-darkest: ${base00}; - --wave-color-solid-rainbow-yellow-fill: ${base0A}; - --wave-color-solid-special-bright: ${base09}; - --wave-color-solid-special-brighter: ${base06}; - --wave-color-solid-special-dark: ${base09}; - --wave-color-solid-special-darker: ${base09}; - --wave-color-solid-special-darkest: ${base00}; - --wave-color-solid-special-fill: ${base0E}; - --wave-color-solid-warning-bright: ${base08}; - --wave-color-solid-warning-brighter: ${base09}; - --wave-color-solid-warning-dark: ${base09}; - --wave-color-solid-warning-darker: ${base01}; - --wave-color-solid-warning-darkest: ${base00}; - --wave-color-solid-warning-fill: ${base08}; - --wave-color-text-disabled: ${base02}; - --wave-color-text-link: ${base0D}; - --wave-color-text-main: ${base07}; - --wave-color-text-placeholder: ${base02}; - --wave-color-text-secondary: ${base06}; - --wave-color-text-tertiary: ${base05}; - --wave-font-weight--bold: 700; - --wave-font-weight--demi: 600; - --wave-font-weight--medium: 500; - --wave-opacity--ultra-thin: .05; - --wave-opacity--thin: .1; - --wave-opacity--regular: .4; - --wave-opacity--thick: .6; - --wave-opacity--ultra-thick: .8; - --wave-spacing--extra-extra-large: 64px; - --wave-spacing--extra-large: 40px; - --wave-spacing--large: 24px; - --wave-spacing--medium: 20px; - --wave-spacing--regular: 16px; - --wave-spacing--small: 12px; - --wave-spacing--extra-small: 8px; - --wave-spacing--extra-extra-small: 4px; - } - - .wave-text-caption-demi, .tidal-ui__v-stack { - color: var(--wave-color-solid-accent-bright) !important; - } - - .tidal-ui__icon { - fill: var(--wave-color-solid-rainbow-purple-fill) !important; - stroke: var(--wave-color-solid-rainbow-purple-fill) !important; - } - ''; - gtk = rec { - gtk3.extraConfig = { - gtk-application-prefer-dark-theme = scheme.variant == "dark"; - }; - gtk4.extraConfig = gtk3.extraConfig; - }; - dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-${scheme.variant}"; - }; - }; -} diff --git a/modules/theme/gtk.nix b/modules/theme/gtk.nix deleted file mode 100644 index 5480549..0000000 --- a/modules/theme/gtk.nix +++ /dev/null @@ -1,78 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: let - inherit (lib) mkOption pathExists; - inherit (lib.types) bool package str; - cfg = config.theme.gtk; -in { - options.theme.gtk = { - enable = mkOption { - type = bool; - description = "enable GTK theming options"; - default = config.theme.enable; - }; - theme = { - name = mkOption { - type = str; - description = "Name for the GTK theme"; - default = "Catppuccin-GTK-Purple-Dark"; - }; - package = mkOption { - type = package; - description = "Package providing the GTK theme"; - - default = pkgs.magnetic-catppuccin-gtk.override { - accent = ["purple"]; - }; - }; - }; - - iconTheme = { - name = mkOption { - type = str; - description = "The name for the icon theme that will be used for GTK programs"; - default = "Papirus-Dark"; - }; - - package = mkOption { - type = package; - description = "The GTK icon theme to be used"; - default = pkgs.catppuccin-papirus-folders.override { - flavor = "mocha"; - accent = "lavender"; - }; - }; - }; - }; - config = { - assertions = [ - (let - themePath = cfg.theme.package + /share/themes + "/${cfg.theme.name}"; - in { - assertion = cfg.enable -> pathExists themePath; - message = '' - ${toString themePath} set by the GTK module does not exist! - - To suppress this message, make sure that - `config.modules.theme.gtk.theme.package` contains - the path `${cfg.theme.name}` - ''; - }) - ]; - - home-manager.users.nezia = { - gtk = { - enable = true; - iconTheme = { - inherit (cfg.iconTheme) name package; - }; - theme = { - inherit (cfg.theme) name package; - }; - }; - }; - }; -} diff --git a/nodes/default.nix b/nodes.nix similarity index 100% rename from nodes/default.nix rename to nodes.nix diff --git a/lib/default.nix b/shared/lib/default.nix similarity index 100% rename from lib/default.nix rename to shared/lib/default.nix diff --git a/shared/nixosModules/default.nix b/shared/nixosModules/default.nix new file mode 100644 index 0000000..8286746 --- /dev/null +++ b/shared/nixosModules/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./systemVars.nix + ./homeVars.nix + ./style + ]; +} diff --git a/shared/nixosModules/homeVars.nix b/shared/nixosModules/homeVars.nix new file mode 100644 index 0000000..3b2688c --- /dev/null +++ b/shared/nixosModules/homeVars.nix @@ -0,0 +1,31 @@ +{ + config, + lib, + options, + ... +}: let + inherit (lib) mkIf mkOption; + inherit (lib.types) str; +in { + options.local.homeVars = { + fullName = mkOption { + type = str; + description = "your full name (used for git commits and user description)"; + default = null; + }; + email = mkOption { + type = str; + description = "your email (used for git commits)"; + default = null; + }; + }; + + config.assertions = mkIf (!config.local.systemVars.isServer) [ + { + assertion = options.local.homeVars.fullName.isDefined; + } + { + assertion = options.local.homeVars.email.isDefined; + } + ]; +} diff --git a/shared/nixosModules/style/default.nix b/shared/nixosModules/style/default.nix new file mode 100644 index 0000000..b45a5a2 --- /dev/null +++ b/shared/nixosModules/style/default.nix @@ -0,0 +1,34 @@ +{ + inputs, + config, + lib, + ... +}: let + inherit (lib) mkIf; + + cfg = config.local.style; +in { + imports = + [ + inputs.niri.nixosModules.niri + inputs.hyprland.nixosModules.default + + ./options.nix + ] + ++ lib.filesystem.listFilesRecursive ./modules; + + config = + mkIf + cfg.enable + { + home-manager.sharedModules = [ + { + home.pointerCursor = { + inherit (cfg.cursorTheme) name package size; + x11.enable = true; + gtk.enable = true; + }; + } + ]; + }; +} diff --git a/shared/nixosModules/style/modules/discord.nix b/shared/nixosModules/style/modules/discord.nix new file mode 100644 index 0000000..93e1a7d --- /dev/null +++ b/shared/nixosModules/style/modules/discord.nix @@ -0,0 +1,114 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; + inherit (cfg) scheme; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + xdg.configFile."equibop/themes/midnight-base16.css".text = with scheme.palette; '' + /** + * @name Midnight-base16 + * @description A dark, rounded discord theme. Updated to use base16 colors. + * @author refact0r + * @version 1.6.2 + * @invite nz87hXyvcy + * @website https://github.com/refact0r/midnight-discord + * @source https://github.com/refact0r/midnight-discord/blob/master/midnight.theme.css + * @authorId 508863359777505290 + * @authorLink https://www.refact0r.dev + */ + + /* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */ + + @import url('https://refact0r.github.io/midnight-discord/midnight.css'); + + /* customize things here */ + :root { + /* font, change to 'gg sans' for default discord font*/ + --font: 'gg sans'; + + /* top left corner text */ + --corner-text: '${scheme.name}'; + + /* color of status indicators and window controls */ + --online-indicator: ${base0B}; /* change to #23a55a for default green */ + --dnd-indicator: ${base08}; /* change to #f13f43 for default red */ + --idle-indicator: ${base0A}; /* change to #f0b232 for default yellow */ + --streaming-indicator: ${base0E}; /* change to #593695 for default purple */ + + /* accent colors */ + --accent-1: ${base0D}; /* links */ + --accent-2: ${base0E}; /* general unread/mention elements, some icons when active */ + --accent-3: ${base0E}; /* accent buttons */ + --accent-4: ${base03}; /* accent buttons when hovered */ + --accent-5: ${base07}; /* accent buttons when clicked */ + --mention: ${base00}1a; /* mentions & mention messages */ + --mention-hover: ${base00}0d; /* mentions & mention messages when hovered */ + + /* text colors */ + --text-0: var(--bg-4); /* text on colored elements */ + --text-1: ${base06}; /* other normally white text */ + --text-2: ${base06}; /* headings and important text */ + --text-3: ${base05}; /* normal text */ + --text-4: ${base05}; /* icon buttons and channels */ + --text-5: ${base04}; /* muted channels/chats and timestamps */ + + /* background and dark colors */ + --bg-1: ${base0E}; /* dark buttons when clicked */ + --bg-2: ${base02}; /* dark buttons */ + --bg-3: ${base01}; /* spacing, secondary elements */ + --bg-4: ${base00}; /* main background color */ + --hover: ${base03}1a; /* channels and buttons when hovered */ + --active: ${base03}33; /* channels and buttons when clicked or selected */ + --message-hover: #0000001a; /* messages when hovered */ + + /* amount of spacing and padding */ + --spacing: 12px; + + /* animations */ + /* ALL ANIMATIONS CAN BE DISABLED WITH REDUCED MOTION IN DISCORD SETTINGS */ + --list-item-transition: 0.2s ease; /* channels/members/settings hover transition */ + --unread-bar-transition: 0.2s ease; /* unread bar moving into view transition */ + --moon-spin-transition: 0.4s ease; /* moon icon spin */ + --icon-spin-transition: 1s ease; /* round icon button spin (settings, emoji, etc.) */ + + /* corner roundness (border-radius) */ + --roundness-xl: 22px; /* roundness of big panel outer corners */ + --roundness-l: 20px; /* popout panels */ + --roundness-m: 16px; /* smaller panels, images, embeds */ + --roundness-s: 12px; /* members, settings inputs */ + --roundness-xs: 10px; /* channels, buttons */ + --roundness-xxs: 8px; /* searchbar, small elements */ + + /* direct messages moon icon */ + /* change to block to show, none to hide */ + --discord-icon: none; /* discord icon */ + --moon-icon: block; /* moon icon */ + --moon-icon-url: url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Font_Awesome_5_solid_moon.svg'); /* custom icon url */ + --moon-icon-size: auto; + + /* filter uncolorable elements to fit theme */ + /* (just set to none, they're too much work to configure) */ + --login-bg-filter: saturate(0.3) hue-rotate(-15deg) brightness(0.4); /* login background artwork */ + --green-to-accent-3-filter: hue-rotate(56deg) saturate(1.43); /* add friend page explore icon */ + --blurple-to-accent-3-filter: hue-rotate(304deg) saturate(0.84) brightness(1.2); /* add friend page school icon */ + } + + /* Selected chat/friend text */ + .selected_f5eb4b, + .selected_f6f816 .link_d8bfb3 { + color: var(--text-0) !important; + background: var(--accent-3) !important; + } + + .selected_f6f816 .link_d8bfb3 * { + color: var(--text-0) !important; + fill: var(--text-0) !important; + } + ''; + } + ]; +} diff --git a/shared/nixosModules/style/modules/fish.nix b/shared/nixosModules/style/modules/fish.nix new file mode 100644 index 0000000..24fe0de --- /dev/null +++ b/shared/nixosModules/style/modules/fish.nix @@ -0,0 +1,46 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + programs.fish.interactiveShellInit = '' + set fish_cursor_default block blink + set fish_cursor_insert line blink + set fish_cursor_replace_one underscore blink + set fish_cursor_visual block + + set -x fish_color_autosuggestion brblack + set -x fish_color_cancel -r + set -x fish_color_command brgreen + set -x fish_color_comment brmagenta + set -x fish_color_cwd green + set -x fish_color_cwd_root red + set -x fish_color_end brmagenta + set -x fish_color_error brred + set -x fish_color_escape brcyan + set -x fish_color_history_current --bold + set -x fish_color_host normal + set -x fish_color_host_remote yellow + set -x fish_color_match --background=brblue + set -x fish_color_normal normal + set -x fish_color_operator cyan + set -x fish_color_param brblue + set -x fish_color_quote yellow + set -x fish_color_redirection bryellow + set -x fish_color_search_match 'bryellow' '--background=brblack' + set -x fish_color_selection 'white' '--bold' '--background=brblack' + set -x fish_color_status red + set -x fish_color_user brgreen + set -x fish_color_valid_path --underline + set -x fish_pager_color_completion normal + set -x fish_pager_color_description yellow + set -x fish_pager_color_prefix 'white' '--bold' '--underline' + set -x fish_pager_color_progress 'brwhite' '--background=cyan' + ''; + } + ]; +} diff --git a/shared/nixosModules/style/modules/foot.nix b/shared/nixosModules/style/modules/foot.nix new file mode 100644 index 0000000..d7ab1a7 --- /dev/null +++ b/shared/nixosModules/style/modules/foot.nix @@ -0,0 +1,44 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + programs.foot.settings.colors = let + # because someone thought this was a great idea: https://github.com/tinted-theming/schemes/commit/61058a8d2e2bd4482b53d57a68feb56cdb991f0b + palette = builtins.mapAttrs (_: color: lib.removePrefix "#" color) cfg.scheme.palette; + in { + background = palette.base00; + foreground = palette.base05; + + regular0 = palette.base00; + regular1 = palette.base08; + regular2 = palette.base0B; + regular3 = palette.base0A; + regular4 = palette.base0D; + regular5 = palette.base0E; + regular6 = palette.base0C; + regular7 = palette.base05; + + bright0 = palette.base02; + bright1 = palette.base08; + bright2 = palette.base0B; + bright3 = palette.base0A; + bright4 = palette.base0D; + bright5 = palette.base0E; + bright6 = palette.base0C; + bright7 = palette.base07; + + "16" = palette.base09; + "17" = palette.base0F; + "18" = palette.base01; + "19" = palette.base02; + "20" = palette.base04; + "21" = palette.base06; + }; + } + ]; +} diff --git a/shared/nixosModules/style/modules/fuzzel.nix b/shared/nixosModules/style/modules/fuzzel.nix new file mode 100644 index 0000000..8c2b8d7 --- /dev/null +++ b/shared/nixosModules/style/modules/fuzzel.nix @@ -0,0 +1,27 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; + inherit (cfg) scheme; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + programs.fuzzel.settings = { + main = { + font = "sans-serif:size=16"; + }; + colors = { + background = "${scheme.palette.base01}f2"; + text = "${scheme.palette.base05}ff"; + match = "${scheme.palette.base0E}ff"; + selection = "${scheme.palette.base03}ff"; + selection-text = "${scheme.palette.base06}ff"; + selection-match = "${scheme.palette.base0E}ff"; + border = "${scheme.palette.base0E}ff"; + }; + }; + } + ]; +} diff --git a/shared/nixosModules/style/modules/gtk.nix b/shared/nixosModules/style/modules/gtk.nix new file mode 100644 index 0000000..2bce480 --- /dev/null +++ b/shared/nixosModules/style/modules/gtk.nix @@ -0,0 +1,30 @@ +{ + lib, + config, + scheme, + ... +}: let + cfg = config.local.style; + inherit (cfg) scheme; +in { + home-manager.sharedModules = lib.mkIf cfg.enable [ + { + gtk = rec { + enable = true; + iconTheme = { + inherit (cfg.gtk.iconTheme) name package; + }; + theme = { + inherit (cfg.gtk.theme) name package; + }; + + gtk3.extraConfig = { + gtk-application-prefer-dark-theme = scheme.variant == "dark"; + }; + gtk4.extraConfig = gtk3.extraConfig; + }; + + dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-${scheme.variant}"; + } + ]; +} diff --git a/shared/nixosModules/style/modules/hyprland.nix b/shared/nixosModules/style/modules/hyprland.nix new file mode 100644 index 0000000..d0a21bd --- /dev/null +++ b/shared/nixosModules/style/modules/hyprland.nix @@ -0,0 +1,27 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + wayland.windowManager.hyprland.settings = { + env = [ + "HYPRCURSOR_THEME,phinger-cursors-light" + "HYPRCURSOR_SIZE,32" + "XCURSOR_SIZE,32" + ]; + general = { + border_size = 4; + "col.active_border" = "rgb(${lib.removePrefix "#" cfg.scheme.palette.base0E})"; + }; + decoration = { + rounding = 10; + blur.enabled = true; + }; + }; + } + ]; +} diff --git a/shared/nixosModules/style/modules/hyprlock.nix b/shared/nixosModules/style/modules/hyprlock.nix new file mode 100644 index 0000000..8564424 --- /dev/null +++ b/shared/nixosModules/style/modules/hyprlock.nix @@ -0,0 +1,103 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; + inherit (cfg) scheme; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + programs.hyprlock = { + settings = { + background = [ + { + path = "screenshot"; + blur_passes = 3; + blur_size = 8; + } + ]; + + general = { + disable_loading_bar = true; + hide_cursor = true; + }; + + label = [ + { + monitor = ""; + text = "Layout: $LAYOUT"; + font_size = 25; + color = scheme.palette.base05; + + position = "30, -30"; + halign = "left"; + valign = "top"; + } + { + monitor = ""; + text = "$TIME"; + font_size = 90; + color = scheme.palette.base05; + + position = "-30, 0"; + halign = "right"; + valign = "top"; + } + { + monitor = ""; + text = "cmd[update:43200000] date +\"%A, %d %B %Y\""; + font_size = 25; + color = scheme.palette.base05; + + position = "-30, -150"; + halign = "right"; + valign = "top"; + } + ]; + + image = { + monitor = ""; + path = "${cfg.avatar}"; # Replace with your avatar path + size = 100; + border_color = scheme.palette.base0D; + + position = "0, 75"; + halign = "center"; + valign = "center"; + }; + + input-field = [ + { + monitor = ""; + + size = "300, 60"; + outline_thickness = 4; + dots_size = 0.2; + dots_spacing = 0.2; + dots_center = true; + + outer_color = scheme.palette.base0D; + inner_color = scheme.palette.base02; + font_color = scheme.palette.base05; + + fade_on_empty = false; + placeholder_text = "󰌾 Logged in as $USER"; + + hide_input = false; + check_color = scheme.palette.base0D; + fail_color = scheme.palette.base08; + + fail_text = "$FAIL ($ATTEMPTS)"; + capslock_color = scheme.palette.base0E; + + position = "0, -47"; + halign = "center"; + valign = "center"; + } + ]; + }; + }; + } + ]; +} diff --git a/shared/nixosModules/style/modules/niri.nix b/shared/nixosModules/style/modules/niri.nix new file mode 100644 index 0000000..a25b136 --- /dev/null +++ b/shared/nixosModules/style/modules/niri.nix @@ -0,0 +1,21 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + programs.niri = { + settings = { + layout.focus-ring.active.color = cfg.scheme.palette.base0D; + cursor = { + inherit (cfg.cursorTheme) size; + theme = cfg.cursorTheme.name; + }; + }; + }; + } + ]; +} diff --git a/shared/nixosModules/style/modules/nvf.nix b/shared/nixosModules/style/modules/nvf.nix new file mode 100644 index 0000000..93be707 --- /dev/null +++ b/shared/nixosModules/style/modules/nvf.nix @@ -0,0 +1,17 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + programs.nvf.settings.vim.theme = { + enable = true; + name = "base16"; + base16-colors = cfg.scheme.palette; + }; + } + ]; +} diff --git a/shared/nixosModules/style/modules/starship.nix b/shared/nixosModules/style/modules/starship.nix new file mode 100644 index 0000000..b0d0007 --- /dev/null +++ b/shared/nixosModules/style/modules/starship.nix @@ -0,0 +1,27 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + programs.starship.settings = { + directory = { + style = "bold yellow"; + }; + character = { + format = "$symbol "; + success_symbol = "[➜](bold green)"; + error_symbol = "[✗](bold red)"; + vicmd_symbol = "[](bold green)"; + }; + cmd_duration = { + style = "yellow"; + format = "[ $duration]($style)"; + }; + }; + } + ]; +} diff --git a/shared/nixosModules/style/modules/swaylock.nix b/shared/nixosModules/style/modules/swaylock.nix new file mode 100644 index 0000000..ec1d416 --- /dev/null +++ b/shared/nixosModules/style/modules/swaylock.nix @@ -0,0 +1,47 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; + inherit (cfg) scheme; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + programs.swaylock.settings = { + inside-color = scheme.palette.base01; + line-color = scheme.palette.base01; + ring-color = scheme.palette.base05; + text-color = scheme.palette.base05; + + inside-clear-color = scheme.palette.base0A; + line-clear-color = scheme.palette.base0A; + ring-clear-color = scheme.palette.base00; + text-clear-color = scheme.palette.base00; + + inside-caps-lock-color = scheme.palette.base03; + line-caps-lock-color = scheme.palette.base03; + ring-caps-lock-color = scheme.palette.base00; + text-caps-lock-color = scheme.palette.base00; + + inside-ver-color = scheme.palette.base0D; + line-ver-color = scheme.palette.base0D; + ring-ver-color = scheme.palette.base00; + text-ver-color = scheme.palette.base00; + + inside-wrong-color = scheme.palette.base08; + line-wrong-color = scheme.palette.base08; + ring-wrong-color = scheme.palette.base00; + text-wrong-color = scheme.palette.base00; + + caps-lock-bs-hl-color = scheme.palette.base08; + caps-lock-key-hl-color = scheme.palette.base0D; + bs-hl-color = scheme.palette.base08; + key-hl-color = scheme.palette.base0D; + + separator-color = "#00000000"; # transparent + layout-bg-color = "#00000050"; # semi-transparent black + }; + } + ]; +} diff --git a/shared/nixosModules/style/modules/swaync.nix b/shared/nixosModules/style/modules/swaync.nix new file mode 100644 index 0000000..b4e517c --- /dev/null +++ b/shared/nixosModules/style/modules/swaync.nix @@ -0,0 +1,14 @@ +{ + config, + lib, + lib', + ... +}: let + cfg = config.local.style; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + services.swaync.style = lib'.generateGtkColors lib cfg.scheme.palette; + } + ]; +} diff --git a/shared/nixosModules/style/modules/tidal-hifi.nix b/shared/nixosModules/style/modules/tidal-hifi.nix new file mode 100644 index 0000000..4bd0b30 --- /dev/null +++ b/shared/nixosModules/style/modules/tidal-hifi.nix @@ -0,0 +1,195 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + # based on https://github.com/rose-pine/tidal. adapted to work with base16 colors. + xdg.configFile."tidal-hifi/themes/base16.css".text = with cfg.scheme.palette; '' + :root { + --glass-white-1: ${base05}; + --glass-white-1-hover: ${base06}; + --glass-white-2: ${base07}; + --glass-white-2-hover: ${base08}; + --glass-white-3: ${base07}; + --glass-white-4: ${base04}; + --glass-white-5: ${base04}; + --glass-white-6: ${base05}; + --snow-white: ${base07}; + --snow-white-hover: ${base08}; + --gray-4: ${base00}; + --gray-5: ${base02}; + --gray-6: ${base03}; + --gray-7: ${base04}; + --cyan-blue: ${base0D}; + --cyan-blue-hover: ${base0C}; + --glass-cyan-1: ${base04}; + --glass-cyan-2: ${base05}; + --glass-cyan-3: ${base06}; + --master-gold: ${base0E}; + --master-gold-hover: ${base08}; + --glass-master-gold: ${base05}; + --glass-master-gold-2: ${base06}; + --raspberry-pink: ${base08}; + --raspberry-pink-lighter: ${base09}; + --black: ${base00}; + --midnight-black: ${base00}; + --controls-overlay: ${base03}; + --duration-overlay: ${base02}; + --background-dark: ${base00}; + --hoverLighten: brightness(130%); + --hoverDarken: brightness(70%); + --hoverTransition: filter 0.15s ease; + --scrollbar-track: ${base03}; + --scrollbar-thumb: ${base00}; + --lighten-25: ${base01}; + --red-alert: ${base08}; + --user-profile-linear-gradient: linear-gradient(160deg,${base0D} 1.22%,${base0C} 40.51%,${base00} 79.07%); + --wave-border-radius--none: 0px; + --wave-border-radius--extra-small: 4px; + --wave-border-radius--small: 8px; + --wave-border-radius--regular: 12px; + --wave-border-radius--full: 1000px; + --wave-color-material-dark: ${base00}80; + --wave-color-material-light: ${base04}33; + --wave-color-opacity-accent-dark-ultra-thick: ${base0C}cc; + --wave-color-opacity-accent-darkest-ultra-thick: ${base01}; + --wave-color-opacity-accent-fill-regular: ${base0C}66; + --wave-color-opacity-accent-fill-thin: ${base0C}33; + --wave-color-opacity-accent-fill-ultra-thick: ${base0C}cc; + --wave-color-opacity-accent-fill-ultra-thin: ${base0C}1a; + --wave-color-opacity-base-bright-thick: ${base00}99; + --wave-color-opacity-base-bright-thin: ${base00}33; + --wave-color-opacity-base-bright-transparent: ${base00}; + --wave-color-opacity-base-bright-ultra-thick: ${base00}cc; + --wave-color-opacity-base-brighter-ultra-thick: ${base01}cc; + --wave-color-opacity-base-brightest-regular: ${base02}66; + --wave-color-opacity-base-brightest-thin: ${base02}33; + --wave-color-opacity-base-brightest-ultra-thin: ${base02}1a; + --wave-color-opacity-base-fill-regular: ${base00}66; + --wave-color-opacity-base-fill-thick: ${base00}99; + --wave-color-opacity-base-fill-thin: ${base00}33; + --wave-color-opacity-base-fill-transparent: #000; + --wave-color-opacity-base-fill-ultra-thick: ${base00}cc; + --wave-color-opacity-base-fill-ultra-thin: ${base00}1a; + --wave-color-opacity-contrast-fill-regular: ${base07}66; + --wave-color-opacity-contrast-fill-thick: ${base07}99; + --wave-color-opacity-contrast-fill-thin: ${base07}33; + --wave-color-opacity-contrast-fill-transparent: #fff; + --wave-color-opacity-contrast-fill-ultra-thick: ${base07}cc; + --wave-color-opacity-contrast-fill-ultra-thin: ${base07}1a; + --wave-color-opacity-rainbow-blue-thin: ${base0D}33; + --wave-color-opacity-rainbow-yellow-fill-regular: ${base0E}66; + --wave-color-opacity-rainbow-yellow-fill-thin: ${base0E}33; + --wave-color-opacity-rainbow-yellow-fill-ultra-thick: ${base0E}cc; + --wave-color-opacity-rainbow-yellow-fill-ultra-thin: ${base0E}1a; + --wave-color-opacity-special-fill-regular: ${base0E}66; + --wave-color-opacity-special-fill-thin: ${base0E}33; + --wave-color-opacity-special-fill-ultra-thick: ${base0E}cc; + --wave-color-opacity-special-fill-ultra-thin: ${base0E}1a; + --wave-color-services-facebook: ${base0D}; + --wave-color-services-instagram-red: ${base08}; + --wave-color-services-mtn: ${base0E}; + --wave-color-services-musix-orange: ${base09}; + --wave-color-services-musix-pink: ${base0E}; + --wave-color-services-play: ${base0C}; + --wave-color-services-plus: ${base0B}; + --wave-color-services-snapchat: ${base0A}; + --wave-color-services-sprint: ${base0A}; + --wave-color-services-t-mobile: ${base08}; + --wave-color-services-tik-tok-blue: ${base0D}; + --wave-color-services-tik-tok-red: ${base08}; + --wave-color-services-twitter: ${base0D}; + --wave-color-services-viacom-1: ${base0D}; + --wave-color-services-viacom-2: ${base0E}; + --wave-color-services-viacom-3: ${base08}; + --wave-color-services-viacom-4: ${base09}; + --wave-color-services-viacom-5: ${base0E}; + --wave-color-services-vivo: ${base0E}; + --wave-color-services-vodafone: ${base08}; + --wave-color-services-waze: ${base0D}; + --wave-color-solid-accent-bright: ${base0D}; + --wave-color-solid-accent-brighter: ${base0D}; + --wave-color-solid-accent-dark: ${base0C}; + --wave-color-solid-accent-darker: ${base01}; + --wave-color-solid-accent-darkest: ${base00}; + --wave-color-solid-accent-fill: ${base0D}; + --wave-color-solid-base-bright: ${base00}; + --wave-color-solid-base-brighter: ${base01}; + --wave-color-solid-base-brightest: ${base02}; + --wave-color-solid-base-fill: ${base00}; + --wave-color-solid-contrast-dark: ${base07}; + --wave-color-solid-contrast-darker: ${base06}; + --wave-color-solid-contrast-darkest: ${base05}; + --wave-color-solid-contrast-fill: ${base07}; + --wave-color-solid-rainbow-blue-fill: ${base0D}; + --wave-color-solid-rainbow-green-brighter: ${base0D}; + --wave-color-solid-rainbow-green-dark: ${base0C}; + --wave-color-solid-rainbow-green-darker: ${base0C}; + --wave-color-solid-rainbow-green-darkest: ${base01}; + --wave-color-solid-rainbow-green-fill: ${base0D}; + --wave-color-solid-rainbow-orange-fill: ${base09}; + --wave-color-solid-rainbow-purple-fill: ${base0E}; + --wave-color-solid-rainbow-red-bright: ${base08}; + --wave-color-solid-rainbow-red-brighter: ${base08}; + --wave-color-solid-rainbow-red-dark: ${base09}; + --wave-color-solid-rainbow-red-darker: ${base01}; + --wave-color-solid-rainbow-red-darkest: ${base00}; + --wave-color-solid-rainbow-red-fill: ${base08}; + --wave-color-solid-rainbow-yellow-bright: ${base0A}; + --wave-color-solid-rainbow-yellow-brighter: ${base06}; + --wave-color-solid-rainbow-yellow-dark: ${base09}; + --wave-color-solid-rainbow-yellow-darker: ${base01}; + --wave-color-solid-rainbow-yellow-darkest: ${base00}; + --wave-color-solid-rainbow-yellow-fill: ${base0A}; + --wave-color-solid-special-bright: ${base09}; + --wave-color-solid-special-brighter: ${base06}; + --wave-color-solid-special-dark: ${base09}; + --wave-color-solid-special-darker: ${base09}; + --wave-color-solid-special-darkest: ${base00}; + --wave-color-solid-special-fill: ${base0E}; + --wave-color-solid-warning-bright: ${base08}; + --wave-color-solid-warning-brighter: ${base09}; + --wave-color-solid-warning-dark: ${base09}; + --wave-color-solid-warning-darker: ${base01}; + --wave-color-solid-warning-darkest: ${base00}; + --wave-color-solid-warning-fill: ${base08}; + --wave-color-text-disabled: ${base02}; + --wave-color-text-link: ${base0D}; + --wave-color-text-main: ${base07}; + --wave-color-text-placeholder: ${base02}; + --wave-color-text-secondary: ${base06}; + --wave-color-text-tertiary: ${base05}; + --wave-font-weight--bold: 700; + --wave-font-weight--demi: 600; + --wave-font-weight--medium: 500; + --wave-opacity--ultra-thin: .05; + --wave-opacity--thin: .1; + --wave-opacity--regular: .4; + --wave-opacity--thick: .6; + --wave-opacity--ultra-thick: .8; + --wave-spacing--extra-extra-large: 64px; + --wave-spacing--extra-large: 40px; + --wave-spacing--large: 24px; + --wave-spacing--medium: 20px; + --wave-spacing--regular: 16px; + --wave-spacing--small: 12px; + --wave-spacing--extra-small: 8px; + --wave-spacing--extra-extra-small: 4px; + } + + .wave-text-caption-demi, .tidal-ui__v-stack { + color: var(--wave-color-solid-accent-bright) !important; + } + + .tidal-ui__icon { + fill: var(--wave-color-solid-rainbow-purple-fill) !important; + stroke: var(--wave-color-solid-rainbow-purple-fill) !important; + } + ''; + } + ]; +} diff --git a/shared/nixosModules/style/modules/waybar.nix b/shared/nixosModules/style/modules/waybar.nix new file mode 100644 index 0000000..a9a5e8f --- /dev/null +++ b/shared/nixosModules/style/modules/waybar.nix @@ -0,0 +1,15 @@ +{ + lib, + lib', + config, + ... +}: let + cfg = config.local.style; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + programs.waybar.style = + lib'.generateGtkColors lib cfg.scheme.palette; + } + ]; +} diff --git a/shared/nixosModules/style/modules/zathura.nix b/shared/nixosModules/style/modules/zathura.nix new file mode 100644 index 0000000..070d67a --- /dev/null +++ b/shared/nixosModules/style/modules/zathura.nix @@ -0,0 +1,43 @@ +{ + lib, + config, + ... +}: let + cfg = config.local.style; + inherit (cfg) scheme; +in { + config.home-manager.sharedModules = lib.mkIf cfg.enable [ + { + programs.zathura.options = { + default-fg = scheme.palette.base01; + default-bg = scheme.palette.base00; + + completion-bg = scheme.palette.base01; + completion-fg = scheme.palette.base0D; + completion-highlight-bg = scheme.palette.base0D; + completion-highlight-fg = scheme.palette.base07; + + statusbar-fg = scheme.palette.base04; + statusbar-bg = scheme.palette.base02; + + notification-bg = scheme.palette.base00; + notification-fg = scheme.palette.base07; + notification-error-bg = scheme.palette.base00; + notification-error-fg = scheme.palette.base08; + notification-warning-bg = scheme.palette.base00; + notification-warning-fg = scheme.palette.base0A; + + inputbar-fg = scheme.palette.base07; + inputbar-bg = scheme.palette.base00; + + recolor = false; + recolor-keephue = false; + recolor-lightcolor = scheme.palette.base00; + recolor-darkcolor = scheme.palette.base06; + + highlight-color = scheme.palette.base0A; + highlight-active-color = scheme.palette.base0D; + }; + } + ]; +} diff --git a/shared/nixosModules/style/options.nix b/shared/nixosModules/style/options.nix new file mode 100644 index 0000000..5160be3 --- /dev/null +++ b/shared/nixosModules/style/options.nix @@ -0,0 +1,138 @@ +{ + lib, + pkgs, + config, + options, + inputs, + ... +}: let + inherit (lib) attrNames mkEnableOption mkOption pathExists; + inherit (lib.types) attrs bool enum package path str; + + cfg = config.local.style; +in { + options.local.style = { + enable = mkEnableOption "style"; + schemeName = mkOption { + description = '' + Name of the tinted-theming color scheme to use. + ''; + type = enum (attrNames inputs.basix.schemeData.base16); + example = "catppuccin-mocha"; + default = "catppuccin-mocha"; + }; + + scheme = mkOption { + description = '' + Computed scheme from `config.local.style.schemeName`. + ''; + type = attrs; + readOnly = true; + }; + wallpaper = mkOption { + description = '' + Location of the wallpaper that will be used throughout the system. + ''; + type = path; + example = lib.literalExpression "./wallpaper.png"; + default = pkgs.fetchurl { + url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/e0cf0eb237dc5baba86661a3572b20a6183c1876/wallpapers/nix-wallpaper-nineish-catppuccin-frappe.png?raw=true"; + hash = "sha256-/HAtpGwLxjNfJvX5/4YZfM8jPNStaM3gisK8+ImRmQ4="; + }; + }; + + cursorTheme = { + name = mkOption { + description = '' + Name of the cursor theme. + ''; + default = "phinger-cursors-dark"; + }; + package = mkOption { + type = package; + description = '' + Package providing the cursor theme. + ''; + default = pkgs.phinger-cursors; + }; + size = mkOption { + description = '' + Size of the cursor. + ''; + default = 32; + }; + }; + + avatar = mkOption { + description = '' + Path to an avatar image (used for hyprlock). + ''; + default = ../../../assets/avatar.png; # TODO silly, change this + }; + + gtk = { + enable = mkOption { + type = bool; + description = "enable GTK theming options"; + default = cfg.enable; + }; + theme = { + name = mkOption { + type = str; + description = "Name for the GTK theme"; + default = "Catppuccin-GTK-Purple-Dark"; + }; + package = mkOption { + type = package; + description = "Package providing the GTK theme"; + + default = pkgs.magnetic-catppuccin-gtk.override { + accent = ["purple"]; + }; + }; + }; + + iconTheme = { + name = mkOption { + type = str; + description = "The name for the icon theme that will be used for GTK programs"; + default = "Papirus-Dark"; + }; + + package = mkOption { + type = package; + description = "The GTK icon theme to be used"; + default = pkgs.catppuccin-papirus-folders.override { + flavor = "mocha"; + accent = "lavender"; + }; + }; + }; + }; + }; + + config = { + assertions = [ + (let + themePath = cfg.gtk.theme.package + /share/themes + "/${cfg.gtk.theme.name}"; + in { + assertion = cfg.gtk.enable -> pathExists themePath; + message = '' + ${toString themePath} set by the GTK module does not exist! + + To suppress this message, make sure that + `config.modules.theme.gtk.theme.package` contains + the path `${cfg.theme.name}` + ''; + }) + { + assertion = cfg.enable -> options.local.systemVars.username.isDefined; + message = '' + When enabling system-wide theming, a username needs to be set in `config.local.systemVars.username`. + ''; + } + ]; + + local.style.scheme = inputs.basix.schemeData.base16.${cfg.schemeName}; + }; +} diff --git a/shared/nixosModules/systemVars.nix b/shared/nixosModules/systemVars.nix new file mode 100644 index 0000000..cb8d169 --- /dev/null +++ b/shared/nixosModules/systemVars.nix @@ -0,0 +1,35 @@ +{ + lib, + options, + ... +}: let + inherit (lib) mkOption; + inherit (lib.types) bool str; +in { + options.local.systemVars = { + hostName = mkOption { + type = str; + description = "hostname for the current host"; + default = null; + }; + username = mkOption { + type = str; + description = "username for the home directory"; + default = null; + }; + isServer = mkOption { + type = bool; + description = "whether or not this host is a server"; + default = false; + }; + }; + + config.assertions = [ + { + assertion = options.local.systemVars.hostName.isDefined; + } + { + assertion = options.local.systemVars.username.isDefined; + } + ]; +} diff --git a/pkgs/bolt-launcher.nix b/shared/pkgs/bolt-launcher.nix similarity index 100% rename from pkgs/bolt-launcher.nix rename to shared/pkgs/bolt-launcher.nix diff --git a/pkgs/default.nix b/shared/pkgs/default.nix similarity index 100% rename from pkgs/default.nix rename to shared/pkgs/default.nix diff --git a/pkgs/mcuxpresso/config-tools.nix b/shared/pkgs/mcuxpresso/config-tools.nix similarity index 100% rename from pkgs/mcuxpresso/config-tools.nix rename to shared/pkgs/mcuxpresso/config-tools.nix diff --git a/pkgs/mcuxpresso/default.nix b/shared/pkgs/mcuxpresso/default.nix similarity index 100% rename from pkgs/mcuxpresso/default.nix rename to shared/pkgs/mcuxpresso/default.nix diff --git a/pkgs/mcuxpresso/ide.nix b/shared/pkgs/mcuxpresso/ide.nix similarity index 100% rename from pkgs/mcuxpresso/ide.nix rename to shared/pkgs/mcuxpresso/ide.nix