From 7025bdae9e4c6bfbaa9aaa8cab863da31805fae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonardo=20Eug=C3=AAnio?= Date: Mon, 23 Jan 2023 20:56:18 -0300 Subject: [PATCH] Allow standalone home-manager installation --- flake.nix | 16 ++- overlays/default.nix | 123 ++++++++++++---------- overlays/sixel-patches.nix | 3 +- pkgs/default.nix | 3 +- {overlays => pkgs}/plymouth-theme-red.nix | 2 +- user/home.nix | 4 +- 6 files changed, 91 insertions(+), 60 deletions(-) rename {overlays => pkgs}/plymouth-theme-red.nix (95%) diff --git a/flake.nix b/flake.nix index 0a46873..07b3974 100644 --- a/flake.nix +++ b/flake.nix @@ -69,13 +69,17 @@ pkgs = import nixpkgs { inherit system; config = { allowUnfree = true; }; + overlays = old_overlays.all; }; lib = nixpkgs.lib; - packages = import ./pkgs { inherit pkgs; }; + packages = import ./pkgs { inherit pkgs inputs; }; + + old_overlays = (import ./overlays (inputs // { inherit system packages; })); specialArgs = { inherit inputs; }; common_modules = [ + { nixpkgs.pkgs = pkgs; } ./system/configuration.nix ./system/secrets.nix ./system/specialisation.nix @@ -86,7 +90,6 @@ programs.hyprland.enable = true; # programs.hyprland.package = null; } - (import ./overlays (inputs // { inherit system packages; })) home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; @@ -132,6 +135,15 @@ }]; }; }; + + homeConfigurations.lelgenio = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + + extraSpecialArgs = { inherit inputs; }; + + modules = [ ./user/home.nix ]; + }; + packages.${system}.linuxPackages = packages; }; } diff --git a/overlays/default.nix b/overlays/default.nix index fb867e7..8972500 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,55 +1,72 @@ -(inputs@{ system, packages, ... }: -{ pkgs, ... }: { - nixpkgs.overlays = [ - inputs.nur.overlay - (import ../scripts) - (import ./sway.nix) - (final: prev: { - unstable = inputs.nixpkgs-unstable.legacyPackages.${prev.system}; - }) - (import ./sixel-patches.nix (inputs // { inherit pkgs; })) - (final: prev: { - inherit (packages) dzgui; - plymouth-theme-red = (import ./plymouth-theme-red.nix (inputs // { inherit pkgs; })); - uservars = import ../user/variables.nix; - dhist = inputs.dhist.packages.${system}.dhist; - demoji = inputs.demoji.packages.${system}.demoji; - devenv = inputs.devenv.packages.${system}.devenv; - mpvpaper = inputs.wegank.packages.${prev.system}.mpvpaper; - - bemenu = prev.bemenu.overrideAttrs (o: { - preBuild = '' - sed -i 's/ZWLR_LAYER_SHELL_V1_LAYER_TOP/ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY/g' lib/renderers/wayland/window.c - ''; - }); - - sea-orm-cli = - inputs.sea-orm-cli.legacyPackages.${prev.system}.sea-orm-cli; - webcord = inputs.webcord.legacyPackages.${prev.system}.webcord; - nil-lsp = inputs.nil-lsp.packages.${prev.system}.nil; - sway-unwrapped = prev.sway-unwrapped.overrideAttrs (old: { - patches = old.patches - ++ [ ../patches/sway/fix-hide_cursor-clearing-focus.patch ]; - }); - material-wifi-icons = final.stdenv.mkDerivation rec { - name = "material-wifi-icons"; - src = inputs.material-wifi-icons; - installPhase = - let dest = "$out/share/fonts/${name}"; - in '' - mkdir -p ${dest} - cp material-wifi.ttf ${dest} - ''; - }; - papirus_red = - (final.unstable.papirus-icon-theme.override { color = "red"; }); - orchis_theme_compact = - (final.orchis-theme.override { tweaks = [ "compact" "solid" ]; }); - nerdfonts_fira_hack = - (final.nerdfonts.override { fonts = [ "FiraCode" "Hack" ]; }); - steam = prev.steam.override { - extraPkgs = pkgs: with pkgs; [ capitaine-cursors bibata-cursors ]; - }; - }) +(inputs@{ system, packages, ... }: rec { + all = [ + nur + scripts + sway + unstable + sixel-patches + themes + new-packages + patches + variables ]; + + nur = inputs.nur.overlay; + scripts = (import ../scripts); + + sway = (import ./sway.nix); + + unstable = (final: prev: { + unstable = inputs.nixpkgs-unstable.legacyPackages.${prev.system}; + }); + + sixel-patches = (import ./sixel-patches.nix (inputs)); + + themes = (final: prev: { + material-wifi-icons = final.stdenv.mkDerivation rec { + name = "material-wifi-icons"; + src = inputs.material-wifi-icons; + installPhase = + let dest = "$out/share/fonts/${name}"; + in '' + mkdir -p ${dest} + cp material-wifi.ttf ${dest} + ''; + }; + papirus_red = (final.unstable.papirus-icon-theme.override { color = "red"; }); + orchis_theme_compact = (final.orchis-theme.override { tweaks = [ "compact" "solid" ]; }); + nerdfonts_fira_hack = (final.nerdfonts.override { fonts = [ "FiraCode" "Hack" ]; }); + }); + + new-packages = (final: prev: { + inherit (packages) dzgui plymouth-theme-red; + + dhist = inputs.dhist.packages.${system}.dhist; + demoji = inputs.demoji.packages.${system}.demoji; + devenv = inputs.devenv.packages.${system}.devenv; + mpvpaper = inputs.wegank.packages.${prev.system}.mpvpaper; + + sea-orm-cli = inputs.sea-orm-cli.legacyPackages.${prev.system}.sea-orm-cli; + webcord = inputs.webcord.legacyPackages.${prev.system}.webcord; + nil-lsp = inputs.nil-lsp.packages.${prev.system}.nil; + }); + + patches = (final: prev: { + bemenu = prev.bemenu.overrideAttrs (o: { + preBuild = '' + sed -i 's/ZWLR_LAYER_SHELL_V1_LAYER_TOP/ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY/g' lib/renderers/wayland/window.c + ''; + }); + sway-unwrapped = prev.sway-unwrapped.overrideAttrs (old: { + patches = old.patches + ++ [ ../patches/sway/fix-hide_cursor-clearing-focus.patch ]; + }); + steam = prev.steam.override { + extraPkgs = pkgs: with pkgs; [ capitaine-cursors bibata-cursors ]; + }; + }); + + variables = (final: prev: { + uservars = import ../user/variables.nix; + }); }) diff --git a/overlays/sixel-patches.nix b/overlays/sixel-patches.nix index 15e4889..e94c77f 100644 --- a/overlays/sixel-patches.nix +++ b/overlays/sixel-patches.nix @@ -1,5 +1,4 @@ -inputs@{ pkgs, ... }: -(final: prev: { +inputs: (final: prev: { alacritty = (prev.unstable.alacritty.overrideAttrs (old-alacritty: rec { src = inputs.alacritty-sixel; cargoDeps = old-alacritty.cargoDeps.overrideAttrs (prev.lib.const { diff --git a/pkgs/default.nix b/pkgs/default.nix index 716252b..98e2190 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,6 +1,7 @@ # Custom packages, that can be defined similarly to ones from nixpkgs # You can build them using 'nix build .#example' or (legacy) 'nix-build -A example' -{ pkgs }: { +{ pkgs, inputs }: { dzgui = pkgs.callPackage ./dzgui.nix { }; + plymouth-theme-red = pkgs.callPackage ./plymouth-theme-red.nix { inherit inputs; }; } diff --git a/overlays/plymouth-theme-red.nix b/pkgs/plymouth-theme-red.nix similarity index 95% rename from overlays/plymouth-theme-red.nix rename to pkgs/plymouth-theme-red.nix index 3d536f4..0002dce 100644 --- a/overlays/plymouth-theme-red.nix +++ b/pkgs/plymouth-theme-red.nix @@ -1,4 +1,4 @@ -inputs@{ pkgs, ... }: +{ pkgs, inputs }: pkgs.stdenv.mkDerivation rec { pname = "red-loader-plymouth"; version = "0.0.1"; diff --git a/user/home.nix b/user/home.nix index 53bda56..ca0b5b7 100644 --- a/user/home.nix +++ b/user/home.nix @@ -39,8 +39,10 @@ home.homeDirectory = "/home/lelgenio"; # Let Home Manager install and manage itself. - programs.home-manager.enable = true; + # programs.home-manager.enable = true; home.packages = with pkgs; [ + # home-manager + terminal # see flake.nix pulse_sink