refactor(modules)!: auto import modules & improve passing of arguments (#60)
This commit is contained in:
parent
a0e508260c
commit
714c415506
9 changed files with 55 additions and 85 deletions
13
flake.nix
13
flake.nix
|
@ -22,13 +22,6 @@
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
|
|
||||||
forAllSystems = fn: lib.genAttrs systems (s: fn nixpkgs.legacyPackages.${s});
|
forAllSystems = fn: lib.genAttrs systems (s: fn nixpkgs.legacyPackages.${s});
|
||||||
|
|
||||||
sources = pkgs:
|
|
||||||
let
|
|
||||||
s =
|
|
||||||
import ./_sources/generated.nix { inherit (pkgs) fetchgit fetchurl fetchFromGitHub dockerTools; };
|
|
||||||
in
|
|
||||||
builtins.mapAttrs (_: p: p.src) s;
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
checks = forAllSystems (pkgs: lib.optionalAttrs pkgs.stdenv.isLinux {
|
checks = forAllSystems (pkgs: lib.optionalAttrs pkgs.stdenv.isLinux {
|
||||||
|
@ -37,9 +30,9 @@
|
||||||
|
|
||||||
formatter = forAllSystems (pkgs: pkgs.nixpkgs-fmt);
|
formatter = forAllSystems (pkgs: pkgs.nixpkgs-fmt);
|
||||||
|
|
||||||
homeManagerModules.catppuccin = import ./modules/home-manager { inherit inputs sources; };
|
homeManagerModules.catppuccin = import ./modules/home-manager;
|
||||||
|
|
||||||
nixosModules.catppuccin = import ./modules/nixos { inherit inputs sources; };
|
nixosModules.catppuccin = import ./modules/nixos;
|
||||||
|
|
||||||
packages = forAllSystems (pkgs:
|
packages = forAllSystems (pkgs:
|
||||||
let
|
let
|
||||||
|
@ -60,7 +53,7 @@
|
||||||
doc = pkgs.nixosOptionsDoc {
|
doc = pkgs.nixosOptionsDoc {
|
||||||
options = lib.filterAttrs (n: _: n != "_module") (eval module).options;
|
options = lib.filterAttrs (n: _: n != "_module") (eval module).options;
|
||||||
documentType = "none";
|
documentType = "none";
|
||||||
revision = builtins.substring 0 7 self.rev or "dirty";
|
revision = builtins.substring 0 8 self.rev or "dirty";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
pkgs.runCommand "${name}-module-doc.md" { } ''
|
pkgs.runCommand "${name}-module-doc.md" { } ''
|
||||||
|
|
|
@ -1,45 +1,4 @@
|
||||||
{ inputs, ... }@flakeArgs: { lib, pkgs, ... }@systemArgs:
|
{ lib, pkgs, ... }@args:
|
||||||
let
|
|
||||||
extendedLib = import ../lib/mkExtLib.nix inputs.nixpkgs.lib (flakeArgs // systemArgs);
|
|
||||||
inherit (extendedLib) ctp;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = import ../lib/mkImports.nix args ./.;
|
||||||
let
|
|
||||||
files = [
|
|
||||||
./alacritty.nix
|
|
||||||
./bat.nix
|
|
||||||
./bottom.nix
|
|
||||||
./btop.nix
|
|
||||||
./fish.nix
|
|
||||||
./kitty.nix
|
|
||||||
./lazygit.nix
|
|
||||||
./starship.nix
|
|
||||||
./helix.nix
|
|
||||||
./hyprland.nix
|
|
||||||
./glamour.nix
|
|
||||||
./gtk.nix
|
|
||||||
./mako.nix
|
|
||||||
./neovim.nix
|
|
||||||
./micro.nix
|
|
||||||
./polybar.nix
|
|
||||||
./sway.nix
|
|
||||||
./tmux.nix
|
|
||||||
./zathura.nix
|
|
||||||
];
|
|
||||||
in
|
|
||||||
extendedLib.ctp.mapModules extendedLib files;
|
|
||||||
|
|
||||||
options.catppuccin = {
|
|
||||||
flavour = lib.mkOption {
|
|
||||||
type = ctp.types.flavourOption;
|
|
||||||
default = "latte";
|
|
||||||
description = "Global Catppuccin flavour";
|
|
||||||
};
|
|
||||||
accent = lib.mkOption {
|
|
||||||
type = ctp.types.accentOption;
|
|
||||||
default = "teal";
|
|
||||||
description = "Global Catppuccin accent";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
15
modules/home-manager/globals.nix
Normal file
15
modules/home-manager/globals.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{ lib, ... }: {
|
||||||
|
options.catppuccin = {
|
||||||
|
flavour = lib.mkOption {
|
||||||
|
type = lib.ctp.types.flavourOption;
|
||||||
|
default = "latte";
|
||||||
|
description = "Global Catppuccin flavour";
|
||||||
|
};
|
||||||
|
|
||||||
|
accent = lib.mkOption {
|
||||||
|
type = lib.ctp.types.accentOption;
|
||||||
|
default = "teal";
|
||||||
|
description = "Global Catppuccin accent";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
, pkgs
|
, pkgs
|
||||||
, lib
|
, lib
|
||||||
, sources
|
, sources
|
||||||
|
, ...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.programs.zathura.catppuccin;
|
cfg = config.programs.zathura.catppuccin;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
lib: { config, pkgs, sources, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
# string -> type -> string -> a -> a
|
# string -> type -> string -> a -> a
|
||||||
# this is an internal function and shouldn't be
|
# this is an internal function and shouldn't be
|
||||||
|
@ -80,16 +80,6 @@ in
|
||||||
in
|
in
|
||||||
fromJSON (readFile json);
|
fromJSON (readFile json);
|
||||||
|
|
||||||
# a -> a -> [path] -> [path]
|
|
||||||
# this imports a list of paths while inheriting
|
|
||||||
# multiple attributes
|
|
||||||
mapModules = extendedLib:
|
|
||||||
map (m: (import m {
|
|
||||||
inherit config pkgs;
|
|
||||||
sources = sources pkgs;
|
|
||||||
lib = extendedLib;
|
|
||||||
}));
|
|
||||||
|
|
||||||
# string -> a -> a
|
# string -> a -> a
|
||||||
# this creates a basic attrset only containing an
|
# this creates a basic attrset only containing an
|
||||||
# enable and flavour option. the fist string should
|
# enable and flavour option. the fist string should
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
lib: args: lib.extend (self: _: { ctp = import ./. self args; })
|
|
22
modules/lib/mkImports.nix
Normal file
22
modules/lib/mkImports.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# this imports all files in a directory (besides default.nix)
|
||||||
|
# with our modified arguments
|
||||||
|
{ lib, pkgs, ... }@args:
|
||||||
|
dir:
|
||||||
|
let
|
||||||
|
generated = pkgs.callPackage ../../_sources/generated.nix { };
|
||||||
|
in
|
||||||
|
lib.pipe dir [
|
||||||
|
builtins.readDir
|
||||||
|
builtins.attrNames
|
||||||
|
|
||||||
|
(builtins.filter (
|
||||||
|
n: !(builtins.elem n [ "default.nix" ])
|
||||||
|
))
|
||||||
|
|
||||||
|
(map (
|
||||||
|
f: _: import "${dir}/${f}" (args // {
|
||||||
|
sources = builtins.mapAttrs (_: p: p.src) generated;
|
||||||
|
lib = lib.extend (_: _: { ctp = import ./. args; });
|
||||||
|
})
|
||||||
|
))
|
||||||
|
]
|
|
@ -1,22 +1,4 @@
|
||||||
{ inputs, ... }@flakeArgs: { lib, pkgs, ... }@systemArgs:
|
{ lib, pkgs, ... }@args:
|
||||||
let
|
|
||||||
extendedLib = import ../lib/mkExtLib.nix inputs.nixpkgs.lib (systemArgs // flakeArgs);
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = import ../lib/mkImports.nix args ./.;
|
||||||
let
|
|
||||||
files = [
|
|
||||||
./grub.nix
|
|
||||||
];
|
|
||||||
in
|
|
||||||
extendedLib.ctp.mapModules extendedLib files;
|
|
||||||
|
|
||||||
|
|
||||||
options.catppuccin = with extendedLib; {
|
|
||||||
flavour = mkOption {
|
|
||||||
type = ctp.types.flavourOption;
|
|
||||||
default = "latte";
|
|
||||||
description = "Global Catppuccin flavour";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
9
modules/nixos/globals.nix
Normal file
9
modules/nixos/globals.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ lib, ... }: {
|
||||||
|
options.catppuccin = {
|
||||||
|
flavour = lib.mkOption {
|
||||||
|
type = lib.ctp.types.flavourOption;
|
||||||
|
default = "latte";
|
||||||
|
description = "Global Catppuccin flavour";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue