From 567e4eb551fc3a77d1ade38386a0238d633fad22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Tue, 7 Mar 2023 11:25:53 +0100 Subject: [PATCH 1/2] refactor: add lib.my for useful functions --- flake.nix | 41 ++++++++++++++++++++++++----------------- lib/default.nix | 16 ++++++++++++++++ 2 files changed, 40 insertions(+), 17 deletions(-) create mode 100644 lib/default.nix diff --git a/flake.nix b/flake.nix index e6be918..6d7c237 100644 --- a/flake.nix +++ b/flake.nix @@ -104,11 +104,17 @@ channelsConfig.allowUnfree = true; + lib = nixpkgs.lib.extend + (self: super: { my = import ./lib { lib = self; }; }); + ################ ### Overlays ### ################ - overlay = import ./overlays { inherit inputs; }; + overlay = import ./overlays { + inherit inputs; + inherit (self) lib; + }; channels.nixpkgs.overlaysBuilder = channels: [ inputs.emacs.overlays.default @@ -134,22 +140,23 @@ ./modules/profiles/gaming.nix ./modules/profiles/desktop.nix ]; - - hostDefaults.modules = [ - ./modules/default.nix - self.nixosModules.base - inputs.home-manager.nixosModule - { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - extraSpecialArgs = { inherit inputs self; }; - }; - } - inputs.hyprland.nixosModules.default - inputs.agenix.nixosModules.age - inputs.howdy.nixosModules.default - ]; + hostDefaults = { + modules = [ + ./modules/default.nix + self.nixosModules.base + inputs.home-manager.nixosModule + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { inherit inputs self; }; + }; + } + inputs.hyprland.nixosModules.default + inputs.agenix.nixosModules.age + inputs.howdy.nixosModules.default + ]; + }; hosts.nixos-laptop.modules = [ ./hosts/nixos-laptop diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..f2ea1c0 --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,16 @@ +{ lib, ... }: + +lib.makeExtensible (self: rec { + mkDate = longDate: lib.concatStringsSep "-" [ + (builtins.substring 0 4 longDate) + (builtins.substring 4 2 longDate) + (builtins.substring 6 2 longDate) + ]; + mkVersionSrc = src: "unstable-" + builtins.substring 0 7 src.rev; + mkVersionInput = input: + let + date = mkDate (input.lastModifiedDate or "19700101"); + rev = input.shortRev or "dirty"; + in + "unstable-${date}_${rev}}"; +}) From d1f910db692e141c2da3b4fb16ebb5f2273ff9d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Tue, 7 Mar 2023 11:28:27 +0100 Subject: [PATCH 2/2] refactor: split up overlays --- overlays/channels.nix | 12 ++++++ overlays/default.nix | 87 ++++------------------------------------- overlays/packages.nix | 10 +++++ overlays/vimPlugins.nix | 29 ++++++++++++++ overlays/wayland.nix | 33 ++++++++++++++++ 5 files changed, 91 insertions(+), 80 deletions(-) create mode 100644 overlays/channels.nix create mode 100644 overlays/packages.nix create mode 100644 overlays/vimPlugins.nix create mode 100644 overlays/wayland.nix diff --git a/overlays/channels.nix b/overlays/channels.nix new file mode 100644 index 0000000..8c19d82 --- /dev/null +++ b/overlays/channels.nix @@ -0,0 +1,12 @@ +{ lib, inputs }: + +final: prev: { + master = import inputs.master { + inherit (prev) system; + config.allowUnfree = true; + }; + stable = import inputs.stable { + inherit (prev) system; + config.allowUnfree = true; + }; +} diff --git a/overlays/default.nix b/overlays/default.nix index ccea795..772ff29 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,81 +1,8 @@ -{ inputs }: final: prev: -let - mkDate = longDate: (prev.lib.concatStringsSep "-" [ - (builtins.substring 0 4 longDate) - (builtins.substring 4 2 longDate) - (builtins.substring 6 2 longDate) - ]); - mkVersionSrc = src: "unstable-" + builtins.substring 0 7 src.rev; - mkVersionInput = input: "unstable-" + mkDate (input.lastModifiedDate or "19700101") + "_" + (input.shortRev or "dirty"); -in -{ - agenix = inputs.agenix.packages.${prev.system}.default; - attic = inputs.attic.packages.${prev.system}.default; - hyprpaper = inputs.hyprpaper.packages.${prev.system}.default; - neovim-nightly = inputs.neovim.packages.${prev.system}.default; - nil = inputs.nil.packages.${prev.system}.default; +{ inputs, lib }: - logseq-wayland = prev.symlinkJoin { - name = "logseq-wayland"; - paths = [ prev.logseq ]; - nativeBuildInputs = [ prev.makeWrapper ]; - postBuild = '' - wrapProgram $out/bin/logseq \ - --add-flags "--socket=wayland --enable-features=UseOzonePlatform --ozone-platform=wayland" - ''; - }; - - waybar-hyprland = prev.waybar.overrideAttrs (old: { - pname = "${old.pname}-hyprland"; - postPatch = old.postPatch or "" + '' - sed -i 's,zext_workspace_handle_v1_activate(workspace_handle_);,const std::string command = "${final.hyprland}/bin/hyprctl dispatch workspace " + name_;\n\tsystem(command.c_str());,g' src/modules/wlr/workspace_manager.cpp - ''; - mesonFlags = old.mesonFlags or [ ] ++ [ "-Dexperimental=true" ]; - }); - - vimPlugins = prev.vimPlugins // { - nvim-treesitter-textsubjects = prev.vimUtils.buildVimPluginFrom2Nix { - pname = "nvim-treesitter-textsubjects"; - version = mkVersionInput inputs.nvim-treesitter-textsubjects; - src = inputs.nvim-treesitter-textsubjects; - }; - - smartcolumn-nvim = prev.vimUtils.buildVimPluginFrom2Nix { - pname = "smartcolumn-nvim"; - version = mkVersionInput inputs.smartcolumn-nvim; - src = inputs.smartcolumn-nvim; - }; - - copilot-lua = prev.vimPlugins.copilot-lua.overrideAttrs (old: { - version = mkVersionInput inputs.copilot-lua; - src = inputs.copilot-lua; - }); - - lspsaga-nvim-original = prev.vimPlugins.lspsaga-nvim-original.overrideAttrs (old: { - version = mkVersionInput inputs.lspsaga-nvim; - src = inputs.lspsaga-nvim; - }); - }; - - neovide-hyprland = final.symlinkJoin { - name = "neovide-hyprland-${final.neovide.version}"; - paths = [ final.neovide ]; - nativeBuildInputs = [ final.makeWrapper ]; - postBuild = '' - rm $out/bin/neovide - makeWrapper ${final.neovide}/bin/neovide $out/bin/neovide --set WINIT_UNIX_BACKEND x11 - ''; - meta = final.neovide.meta // { - mainProgram = "neovide"; - }; - }; - - master = import inputs.master { - inherit (prev) system; - config.allowUnfree = true; - }; - stable = import inputs.stable { - inherit (prev) system; - config.allowUnfree = true; - }; -} +lib.composeManyExtensions [ + (import ./channels.nix { inherit inputs lib; }) + (import ./packages.nix { inherit inputs lib; }) + (import ./vimPlugins.nix { inherit inputs lib; }) + (import ./wayland.nix { inherit inputs lib; }) +] diff --git a/overlays/packages.nix b/overlays/packages.nix new file mode 100644 index 0000000..d1fb9c3 --- /dev/null +++ b/overlays/packages.nix @@ -0,0 +1,10 @@ +{ inputs, lib }: + +final: prev: +{ + agenix = inputs.agenix.packages.${prev.system}.default; + attic = inputs.attic.packages.${prev.system}.default; + hyprpaper = inputs.hyprpaper.packages.${prev.system}.default; + neovim-nightly = inputs.neovim.packages.${prev.system}.default; + nil = inputs.nil.packages.${prev.system}.default; +} diff --git a/overlays/vimPlugins.nix b/overlays/vimPlugins.nix new file mode 100644 index 0000000..6efbecd --- /dev/null +++ b/overlays/vimPlugins.nix @@ -0,0 +1,29 @@ +{ inputs, lib }: + +final: prev: +with lib.my; +{ + vimPlugins = prev.vimPlugins // { + nvim-treesitter-textsubjects = prev.vimUtils.buildVimPluginFrom2Nix { + pname = "nvim-treesitter-textsubjects"; + version = mkVersionInput inputs.nvim-treesitter-textsubjects; + src = inputs.nvim-treesitter-textsubjects; + }; + + smartcolumn-nvim = prev.vimUtils.buildVimPluginFrom2Nix { + pname = "smartcolumn-nvim"; + version = mkVersionInput inputs.smartcolumn-nvim; + src = inputs.smartcolumn-nvim; + }; + + copilot-lua = prev.vimPlugins.copilot-lua.overrideAttrs (old: { + version = mkVersionInput inputs.copilot-lua; + src = inputs.copilot-lua; + }); + + lspsaga-nvim-original = prev.vimPlugins.lspsaga-nvim-original.overrideAttrs (old: { + version = mkVersionInput inputs.lspsaga-nvim; + src = inputs.lspsaga-nvim; + }); + }; +} diff --git a/overlays/wayland.nix b/overlays/wayland.nix new file mode 100644 index 0000000..f88709a --- /dev/null +++ b/overlays/wayland.nix @@ -0,0 +1,33 @@ +{ lib, inputs }: + +final: prev: { + neovide-hyprland = final.symlinkJoin { + name = "neovide-hyprland-${final.neovide.version}"; + paths = [ final.neovide ]; + nativeBuildInputs = [ final.makeWrapper ]; + postBuild = '' + rm $out/bin/neovide + makeWrapper ${final.neovide}/bin/neovide $out/bin/neovide --set WINIT_UNIX_BACKEND x11 + ''; + meta = final.neovide.meta // { + mainProgram = "neovide"; + }; + }; + logseq-wayland = prev.symlinkJoin { + name = "logseq-wayland"; + paths = [ prev.logseq ]; + nativeBuildInputs = [ prev.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/logseq \ + --add-flags "--socket=wayland --enable-features=UseOzonePlatform --ozone-platform=wayland" + ''; + }; + + waybar-hyprland = prev.waybar.overrideAttrs (old: { + pname = "${old.pname}-hyprland"; + postPatch = old.postPatch or "" + '' + sed -i 's,zext_workspace_handle_v1_activate(workspace_handle_);,const std::string command = "${final.hyprland}/bin/hyprctl dispatch workspace " + name_;\n\tsystem(command.c_str());,g' src/modules/wlr/workspace_manager.cpp + ''; + mesonFlags = old.mesonFlags or [ ] ++ [ "-Dexperimental=true" ]; + }); +}