From 912751b0dfe56a02bc7551f27ce345da2b24c238 Mon Sep 17 00:00:00 2001 From: DashieTM Date: Thu, 18 Apr 2024 03:41:30 +0200 Subject: [PATCH] chore: Further modularize flake --- nix/flake.nix | 100 +++++++---------------- nix/hardware/overheating/base_config.nix | 2 +- nix/hardware/spaceship/base_config.nix | 5 +- nix/modules/default.nix | 6 ++ nix/programs/common.nix | 10 +++ nix/programs/default.nix | 32 ++++++-- nix/programs/homemanager.nix | 3 - nix/programs/themes/gtk4.nix | 4 +- nix/programs/xdg.nix | 74 +++++++++++------ 9 files changed, 124 insertions(+), 112 deletions(-) create mode 100644 nix/modules/default.nix delete mode 100644 nix/programs/homemanager.nix diff --git a/nix/flake.nix b/nix/flake.nix index e36c497..6a9ebab 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -26,93 +26,51 @@ anyrun.inputs.nixpkgs.follows = "nixpkgs"; }; - outputs = inputs @ { self, nixpkgs, home-manager, nix-flatpak, hyprland, anyrun, ironbar, ... }: + outputs = { ... }@inputs: let - pkgs = import nixpkgs { + pkgs = import inputs.nixpkgs { system = "x86_64-linux"; config = { allowUnfree = true; }; }; - - hypr_config = { monitor = [ "" ]; workspace = [ "" ]; }; + base_imports = [ + inputs.home-manager.nixosModules.home-manager + ./base/default.nix + ]; in + #inputs.flake-parts.lib.mkFlake { inherit inputs; } { - # TODO put actual configuration of profiles somewhere else - # TODO: deduplicate - homeConfigurations."marmo" = home-manager.lib.homeManagerConfiguration { - inherit pkgs; - modules = [ ./hardware/marmo/default.nix ]; - }; - nixosConfigurations."overheating" = nixpkgs.lib.nixosSystem { - inherit pkgs; + #imports = [ + #]; + #homeConfigurations."marmo" = inputs.home-manager.lib.homeManagerConfiguration { + # inherit pkgs; + # modules = [ + # ./hardware/marmo/default.nix + # ./programs + # ]; + #}; + nixosConfigurations."overheating" = inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs pkgs; + mod = ./hardware/overheating/base_config.nix; + }; modules = [ ./hardware/overheating/default.nix - ./base/default.nix - hyprland.nixosModules.default - home-manager.nixosModules.home-manager - { - xdg.portal.config.common.default = "*"; - xdg.portal = { - enable = true; - extraPortals = [ - pkgs.xdg-desktop-portal-hyprland - pkgs.xdg-desktop-portal-gtk - ]; - }; - home-manager.useGlobalPkgs = true; - home-manager.users.dashie.imports = [ - { - _module = { args = { inherit self inputs; }; }; - } - ./programs/default.nix - hyprland.homeManagerModules.default - anyrun.homeManagerModules.default - ironbar.homeManagerModules.default - ./hardware/overheating/base_config.nix - ./programs/hyprland/default.nix - nix-flatpak.homeManagerModules.nix-flatpak - ./programs/flatpak.nix - ]; - home-manager.users.dashie.home.stateVersion = "24.05"; - } + ./programs ]; }; - nixosConfigurations."spaceship" = nixpkgs.lib.nixosSystem { - inherit pkgs; + nixosConfigurations."spaceship" = inputs.nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs pkgs; + mod = ./hardware/spaceship/base_config.nix; + }; modules = [ ./hardware/spaceship/default.nix ./hardware/streamdeck.nix ./programs/gaming/default.nix - ./base/default.nix - hyprland.nixosModules.default - home-manager.nixosModules.home-manager - { - xdg.portal.config.common.default = "*"; - xdg.portal = { - enable = true; - extraPortals = [ - pkgs.xdg-desktop-portal-hyprland - pkgs.xdg-desktop-portal-gtk - ]; - }; - home-manager.useGlobalPkgs = true; - home-manager.users.dashie.imports = [ - { - _module = { args = { inherit self inputs; }; }; - } - ./programs/default.nix - hyprland.homeManagerModules.default - anyrun.homeManagerModules.default - ironbar.homeManagerModules.default - ./hardware/spaceship/base_config.nix - ./programs/hyprland/default.nix - nix-flatpak.homeManagerModules.nix-flatpak - ./programs/flatpak.nix - ]; - home-manager.users.dashie.home.stateVersion = "24.05"; - } - ]; + ./programs + ] ++ base_imports; }; }; } diff --git a/nix/hardware/overheating/base_config.nix b/nix/hardware/overheating/base_config.nix index 0f04c65..df6bbc8 100644 --- a/nix/hardware/overheating/base_config.nix +++ b/nix/hardware/overheating/base_config.nix @@ -1,6 +1,6 @@ { lib, config, ... }: { imports = [ - ../../modules/ironbar_config.nix + ../../modules ]; wayland.windowManager.hyprland.settings.monitor = [ # default diff --git a/nix/hardware/spaceship/base_config.nix b/nix/hardware/spaceship/base_config.nix index c0b0499..e2bcd49 100644 --- a/nix/hardware/spaceship/base_config.nix +++ b/nix/hardware/spaceship/base_config.nix @@ -1,7 +1,6 @@ -{ config, ... }: { +{ imports = [ - ../../modules/ironbar_config.nix - ../../modules/hyprpaper_config.nix + ../../modules ]; wayland.windowManager.hyprland.settings.monitor = [ # default diff --git a/nix/modules/default.nix b/nix/modules/default.nix new file mode 100644 index 0000000..8c9ce42 --- /dev/null +++ b/nix/modules/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./ironbar_config.nix + ./hyprpaper_config.nix + ]; +} diff --git a/nix/programs/common.nix b/nix/programs/common.nix index 85c073a..550729e 100644 --- a/nix/programs/common.nix +++ b/nix/programs/common.nix @@ -38,8 +38,14 @@ nix-index libnotify zenith + nh + amberol ]; + home.username = "dashie"; + home.homeDirectory = "/home/dashie"; + home.stateVersion = "24.05"; + home.sessionPath = [ "$HOME/.cargo/bin" ]; @@ -68,4 +74,8 @@ enable = true; enableFishIntegration = true; }; + home.sessionVariables = + { + FLAKE = "home/dasshie/gits/dotFiles/nix"; + }; } diff --git a/nix/programs/default.nix b/nix/programs/default.nix index ef7da4b..d35c6fb 100644 --- a/nix/programs/default.nix +++ b/nix/programs/default.nix @@ -1,5 +1,12 @@ -{ - imports = [ +{ inputs, pkgs, mod, ... }: +let + base_imports = [ + inputs.hyprland.homeManagerModules.default + inputs.anyrun.homeManagerModules.default + inputs.ironbar.homeManagerModules.default + inputs.nix-flatpak.homeManagerModules.nix-flatpak + ./hyprland/default.nix + ./flatpak.nix ./common.nix ./coding.nix ./xdg.nix @@ -9,8 +16,21 @@ ./themes/default.nix ./individual_configs/default.nix ]; - - home.username = "dashie"; - home.homeDirectory = "/home/dashie"; - home.stateVersion = "24.05"; +in +{ + xdg.portal.config.common.default = "*"; + xdg.portal = { + enable = true; + extraPortals = [ + pkgs.xdg-desktop-portal-hyprland + pkgs.xdg-desktop-portal-gtk + ]; + }; + home-manager.useGlobalPkgs = true; + home-manager.users.dashie.imports = [ + { + _module = { args = { inherit inputs; }; }; + } + mod + ] ++ base_imports; } diff --git a/nix/programs/homemanager.nix b/nix/programs/homemanager.nix deleted file mode 100644 index a7ef72e..0000000 --- a/nix/programs/homemanager.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - programs.home-manager.enable = true; -} diff --git a/nix/programs/themes/gtk4.nix b/nix/programs/themes/gtk4.nix index 5c5ba65..7cbfcf3 100644 --- a/nix/programs/themes/gtk4.nix +++ b/nix/programs/themes/gtk4.nix @@ -53,8 +53,8 @@ # @define-color secondary_sidebar_shade_color rgba(0, 0, 0, 0.36); # @define-color thumbnail_bg_color #1a1b26; # @define-color thumbnail_fg_color #c0caf5; -# @define-color sidebar_backdrop_color rgba(192, 202, 245, 0.12); -# @define-color secondary_sidebar_backdrop_color rgba(192, 202, 245, 0.12); +# @define-color sidebar_backdrop_color @sidebar_bg_color; +# @define-color secondary_sidebar_backdrop_color @sidebar_bg_color; # @define-color blue_1 #99c1f1; # @define-color blue_2 #62a0ea; # @define-color blue_3 #3584e4; diff --git a/nix/programs/xdg.nix b/nix/programs/xdg.nix index a0d0b97..b7ca908 100644 --- a/nix/programs/xdg.nix +++ b/nix/programs/xdg.nix @@ -1,33 +1,55 @@ -{config, ...}: - +# Copyright (c) 2020-2021 Mihai Fufezan +# credits to fufexan https://github.com/fufexan/dotfiles/blob/main/home/terminal/programs/xdg.nix +{ config +, pkgs +, ... +}: let - browser = [ "firefox.desktop" ]; + browser = [ "firefox" ]; + imageViewer = [ "imv" ]; + videoPlayer = [ "mpv" ]; + audioPlayer = [ "io.bassi.Amberol" ]; + + xdgAssociations = type: program: list: + builtins.listToAttrs (map + (e: { + name = "${type}/${e}"; + value = program; + }) + list); + + image = xdgAssociations "image" imageViewer [ "png" "svg" "jpeg" "gif" ]; + video = xdgAssociations "video" videoPlayer [ "mp4" "avi" "mkv" ]; + audio = xdgAssociations "audio" audioPlayer [ "mp3" "flac" "wav" "aac" ]; + browserTypes = + (xdgAssociations "application" browser [ + "json" + "x-extension-htm" + "x-extension-html" + "x-extension-shtml" + "x-extension-xht" + "x-extension-xhtml" + ]) + // (xdgAssociations "x-scheme-handler" browser [ + "about" + "ftp" + "http" + "https" + "unknown" + ]); # XDG MIME types - # TODO: make this actually work - associations = { - "application/x-extension-htm" = browser; - "application/x-extension-html" = browser; - "application/x-extension-shtml" = browser; - "application/x-extension-xht" = browser; - "application/x-extension-xhtml" = browser; - "application/xhtml+xml" = browser; + associations = builtins.mapAttrs (_: v: (map (e: "${e}.desktop") v)) ({ + "application/pdf" = [ "org.pwmt.zathura-pdf-mupdf" ]; "text/html" = browser; - "x-scheme-handler/about" = browser; - "x-scheme-handler/chrome" = [ "brave.desktop" ]; - "x-scheme-handler/ftp" = browser; - "x-scheme-handler/http" = browser; - "x-scheme-handler/https" = browser; - "x-scheme-handler/unknown" = browser; - - "audio/*" = [ "mpv.desktop" ]; - "video/*" = [ "mpv.dekstop" ]; - "image/*" = [ "imv.desktop" ]; - "application/json" = browser; - "application/pdf" = [ "org.pwmt.zathura.desktop.desktop" ]; - # "x-scheme-handler/discord" = [ "discordcanary.desktop" ]; - # "x-scheme-handler/spotify" = [ "spotify.desktop" ]; - }; + "text/plain" = [ "neovide" ]; + "x-scheme-handler/chrome" = [ "com.brave.browser" ]; + "inode/directory" = [ "yazi" ]; + } + // image + // video + // audio + // browserTypes); in { xdg = {