Compare commits

...

2 Commits

Author SHA1 Message Date
Moritz Böhme d1f910db69
refactor: split up overlays 2023-03-07 11:28:27 +01:00
Moritz Böhme 567e4eb551
refactor: add lib.my for useful functions 2023-03-07 11:25:53 +01:00
7 changed files with 131 additions and 97 deletions

View File

@ -104,11 +104,17 @@
channelsConfig.allowUnfree = true; channelsConfig.allowUnfree = true;
lib = nixpkgs.lib.extend
(self: super: { my = import ./lib { lib = self; }; });
################ ################
### Overlays ### ### Overlays ###
################ ################
overlay = import ./overlays { inherit inputs; }; overlay = import ./overlays {
inherit inputs;
inherit (self) lib;
};
channels.nixpkgs.overlaysBuilder = channels: [ channels.nixpkgs.overlaysBuilder = channels: [
inputs.emacs.overlays.default inputs.emacs.overlays.default
@ -134,22 +140,23 @@
./modules/profiles/gaming.nix ./modules/profiles/gaming.nix
./modules/profiles/desktop.nix ./modules/profiles/desktop.nix
]; ];
hostDefaults = {
hostDefaults.modules = [ modules = [
./modules/default.nix ./modules/default.nix
self.nixosModules.base self.nixosModules.base
inputs.home-manager.nixosModule inputs.home-manager.nixosModule
{ {
home-manager = { home-manager = {
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
extraSpecialArgs = { inherit inputs self; }; extraSpecialArgs = { inherit inputs self; };
}; };
} }
inputs.hyprland.nixosModules.default inputs.hyprland.nixosModules.default
inputs.agenix.nixosModules.age inputs.agenix.nixosModules.age
inputs.howdy.nixosModules.default inputs.howdy.nixosModules.default
]; ];
};
hosts.nixos-laptop.modules = [ hosts.nixos-laptop.modules = [
./hosts/nixos-laptop ./hosts/nixos-laptop

16
lib/default.nix Normal file
View File

@ -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}}";
})

12
overlays/channels.nix Normal file
View File

@ -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;
};
}

View File

@ -1,81 +1,8 @@
{ inputs }: final: prev: { inputs, lib }:
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;
logseq-wayland = prev.symlinkJoin { lib.composeManyExtensions [
name = "logseq-wayland"; (import ./channels.nix { inherit inputs lib; })
paths = [ prev.logseq ]; (import ./packages.nix { inherit inputs lib; })
nativeBuildInputs = [ prev.makeWrapper ]; (import ./vimPlugins.nix { inherit inputs lib; })
postBuild = '' (import ./wayland.nix { inherit inputs lib; })
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;
};
}

10
overlays/packages.nix Normal file
View File

@ -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;
}

29
overlays/vimPlugins.nix Normal file
View File

@ -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;
});
};
}

33
overlays/wayland.nix Normal file
View File

@ -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" ];
});
}