1
0
Fork 0

Simplify flake-parts modules

This commit is contained in:
Ethan Reece 2025-07-14 01:43:58 -05:00
parent 333f06a179
commit dc57b47ab9
Signed by: me
GPG key ID: DD8CE04D5D8FF832
9 changed files with 281 additions and 312 deletions

1
.envrc
View file

@ -1,3 +1,4 @@
watch_dir ./base
watch_dir ./sops
watch_file ./home-manager/default.nix
use flake

View file

@ -1,57 +1,54 @@
{ flake-parts-lib, inputs, ... }:
{ inputs, ... }:
{
imports = [
inputs.treefmt-nix.flakeModule
inputs.git-hooks-nix.flakeModule
inputs.devshell.flakeModule
];
options.perSystem = flake-parts-lib.mkPerSystemOption (
perSystem =
{ config, pkgs, ... }:
{
config = {
devshells.default = {
commands = [
{
help = "󰚰 update dependencies";
name = "update";
command = "${pkgs.lix}/bin/nix flake update";
category = "󱄅 Flake";
}
{
help = "󰑓 reload direnv environment";
name = "reload";
command = "${pkgs.direnv}/bin/direnv reload";
category = "󱄅 Flake";
}
];
packages = [
pkgs.git
pkgs.jujutsu
pkgs.lix
pkgs.man
pkgs.uutils-coreutils-noprefix
];
devshell.startup = {
pre-commit.text = ''
${config.pre-commit.installationScript}
'';
};
devshells.default = {
commands = [
{
help = "󰚰 update dependencies";
name = "update";
command = "${pkgs.lix}/bin/nix flake update";
category = "󱄅 Flake";
}
{
help = "󰑓 reload direnv environment";
name = "reload";
command = "${pkgs.direnv}/bin/direnv reload";
category = "󱄅 Flake";
}
];
packages = [
pkgs.git
pkgs.jujutsu
pkgs.lix
pkgs.man
pkgs.uutils-coreutils-noprefix
];
devshell.startup = {
pre-commit.text = ''
${config.pre-commit.installationScript}
'';
};
# https://flake.parts/options/git-hooks-nix.html
pre-commit.settings = {
hooks = {
treefmt = {
enable = true;
package = config.treefmt.build.wrapper;
};
check-merge-conflicts.enable = true;
check-symlinks.enable = true;
flake-checker.enable = true;
};
};
# https://flake.parts/options/treefmt-nix.html
treefmt.projectRootFile = "flake.nix";
};
}
);
# https://flake.parts/options/git-hooks-nix.html
pre-commit.settings = {
hooks = {
treefmt = {
enable = true;
package = config.treefmt.build.wrapper;
};
check-merge-conflicts.enable = true;
check-symlinks.enable = true;
flake-checker.enable = true;
};
};
# https://flake.parts/options/treefmt-nix.html
treefmt.projectRootFile = "flake.nix";
};
}

View file

@ -1,4 +1,4 @@
{ flake-parts-lib, ... }:
{ ... }:
let
dictionary = [
"Asahi"
@ -11,7 +11,7 @@ let
];
in
{
options.perSystem = flake-parts-lib.mkPerSystemOption (
perSystem =
{ pkgs, ... }:
let
tomlFormatter = pkgs.formats.toml { };
@ -85,67 +85,64 @@ in
};
in
{
config = {
helix.languages.language-server = {
# https://ltex-plus.github.io/ltex-plus/supported-languages.html
ltex-ls-plus = {
command = "${pkgs.ltex-ls-plus}/bin/ltex-ls-plus";
config.ltex = {
dictionary.en-US = dictionary;
additionalRules.enablePickyRules = true;
};
};
# https://vale.sh/docs/formats/code
vale-ls = {
command = "${pkgs.vale-ls}/bin/vale-ls";
config.configPath = "${vale.directory.path}/${vale.config.name}";
};
# https://writewithharper.com/docs/integrations/language-server#Supported-Languages
harper-ls.command = "${pkgs.harper}/bin/harper-ls";
typos = {
command = "${pkgs.typos-lsp}/bin/typos-lsp";
config.config = typos.file.outPath;
helix.languages.language-server = {
# https://ltex-plus.github.io/ltex-plus/supported-languages.html
ltex-ls-plus = {
command = "${pkgs.ltex-ls-plus}/bin/ltex-ls-plus";
config.ltex = {
dictionary.en-US = dictionary;
additionalRules.enablePickyRules = true;
};
};
pre-commit.settings = {
hooks = {
typos = {
enable = true;
settings = {
configPath = typos.file.outPath;
locale = "en-us";
};
};
vale = {
enable = true;
settings.configPath = "${vale.directory.path}/${vale.config.name}";
};
};
excludes = [ "base/languages/en-us/.vale" ];
# https://vale.sh/docs/formats/code
vale-ls = {
command = "${pkgs.vale-ls}/bin/vale-ls";
config.configPath = "${vale.directory.path}/${vale.config.name}";
};
treefmt = {
programs.typos = {
enable = true;
configFile = typos.file.outPath;
locale = "en-us";
};
settings.global.excludes = [ "base/languages/en-us/.vale/*" ];
};
devshells.default = {
# commands = [
# {
# help = " sync vale configuration";
# name = "vale-sync";
# command = "${pkgs.vale}/bin/vale sync --config ${vale.valeDirectory}/${vale.config.filename}";
# category = " Languages (en_US)";
# }
# ];
# packages = [ pkgs.vale ];
# devshell.startup.vale_config.text = ''
# ${pkgs.uutils-coreutils-noprefix}/bin/ln -fs ${vale.config.file} ${vale.valeDirectory}/${vale.config.filename}
# '';
# https://writewithharper.com/docs/integrations/language-server#Supported-Languages
harper-ls.command = "${pkgs.harper}/bin/harper-ls";
typos = {
command = "${pkgs.typos-lsp}/bin/typos-lsp";
config.config = typos.file.outPath;
};
};
}
);
pre-commit.settings = {
hooks = {
typos = {
enable = true;
settings = {
configPath = typos.file.outPath;
locale = "en-us";
};
};
vale = {
enable = true;
settings.configPath = "${vale.directory.path}/${vale.config.name}";
};
};
excludes = [ "base/languages/en-us/.vale" ];
};
treefmt = {
programs.typos = {
enable = true;
configFile = typos.file.outPath;
locale = "en-us";
};
settings.global.excludes = [ "base/languages/en-us/.vale/*" ];
};
devshells.default = {
# commands = [
# {
# help = " sync vale configuration";
# name = "vale-sync";
# command = "${pkgs.vale}/bin/vale sync --config ${vale.valeDirectory}/${vale.config.filename}";
# category = " Languages (en_US)";
# }
# ];
# packages = [ pkgs.vale ];
# devshell.startup.vale_config.text = ''
# ${pkgs.uutils-coreutils-noprefix}/bin/ln -fs ${vale.config.file} ${vale.valeDirectory}/${vale.config.filename}
# '';
};
};
}

View file

@ -1,46 +1,43 @@
{ flake-parts-lib, ... }:
{ ... }:
{
imports = [ ../en-us ];
options.perSystem = flake-parts-lib.mkPerSystemOption (
perSystem =
{ config, pkgs, ... }:
{
config = {
helix.languages = {
language = [
{
name = "markdown";
language-servers = [
"marksman"
"ltex-ls-plus"
"vale-ls"
"typos"
helix.languages = {
language = [
{
name = "markdown";
language-servers = [
"marksman"
"ltex-ls-plus"
"vale-ls"
"typos"
];
formatter = {
command = "${config.treefmt.build.wrapper}/bin/treefmt";
args = [
"--stdin"
".md"
"--quiet"
];
formatter = {
command = "${config.treefmt.build.wrapper}/bin/treefmt";
args = [
"--stdin"
".md"
"--quiet"
];
};
auto-format = true;
}
];
language-server.marksman.command = "${pkgs.marksman}/bin/marksman";
};
treefmt.programs.dprint = {
enable = true;
settings = {
plugins = (pkgs.dprint-plugins.getPluginList (plugins: with plugins; [ dprint-plugin-markdown ]));
markdown = {
lineWidth = 80;
textWrap = "always";
};
};
includes = [ "*.md" ];
};
pre-commit.settings.hooks.markdownlint.enable = true;
auto-format = true;
}
];
language-server.marksman.command = "${pkgs.marksman}/bin/marksman";
};
}
);
treefmt.programs.dprint = {
enable = true;
settings = {
plugins = (pkgs.dprint-plugins.getPluginList (plugins: with plugins; [ dprint-plugin-markdown ]));
markdown = {
lineWidth = 80;
textWrap = "always";
};
};
includes = [ "*.md" ];
};
pre-commit.settings.hooks.markdownlint.enable = true;
};
}

View file

@ -1,7 +1,7 @@
{ flake-parts-lib, ... }:
{ ... }:
{
imports = [ ../en-us ];
options.perSystem = flake-parts-lib.mkPerSystemOption (
perSystem =
{ config, pkgs, ... }:
{
helix.languages = {
@ -30,6 +30,5 @@
enable = true;
strict = true;
};
}
);
};
}

View file

@ -1,35 +1,32 @@
{ flake-parts-lib, ... }:
{ ... }:
{
imports = [ ../en-us ];
options.perSystem = flake-parts-lib.mkPerSystemOption (
perSystem =
{ config, pkgs, ... }:
{
config = {
helix.languages = {
language = [
{
name = "toml";
language-servers = [
"taplo"
"harper-ls"
"typos"
helix.languages = {
language = [
{
name = "toml";
language-servers = [
"taplo"
"harper-ls"
"typos"
];
formatter = {
command = "${config.treefmt.build.wrapper}/bin/treefmt";
args = [
"--stdin"
".toml"
"--quiet"
];
formatter = {
command = "${config.treefmt.build.wrapper}/bin/treefmt";
args = [
"--stdin"
".toml"
"--quiet"
];
};
auto-format = true;
}
];
language-server.taplo.command = "${pkgs.taplo}/bin/taplo";
};
treefmt.programs.taplo.enable = true;
pre-commit.settings.hooks.check-toml.enable = true;
};
auto-format = true;
}
];
language-server.taplo.command = "${pkgs.taplo}/bin/taplo";
};
}
);
treefmt.programs.taplo.enable = true;
pre-commit.settings.hooks.check-toml.enable = true;
};
}

View file

@ -1,47 +1,44 @@
{ flake-parts-lib, ... }:
{ ... }:
{
imports = [ ../en-us ];
options.perSystem = flake-parts-lib.mkPerSystemOption (
perSystem =
{ config, pkgs, ... }:
{
config = {
helix.languages = {
language = [
{
name = "yaml";
language-servers = [
"yaml-language-server"
"harper-ls"
"typos"
helix.languages = {
language = [
{
name = "yaml";
language-servers = [
"yaml-language-server"
"harper-ls"
"typos"
];
formatter = {
command = "${config.treefmt.build.wrapper}/bin/treefmt";
args = [
"--stdin"
".yaml"
"--quiet"
];
formatter = {
command = "${config.treefmt.build.wrapper}/bin/treefmt";
args = [
"--stdin"
".yaml"
"--quiet"
];
};
auto-format = true;
}
];
language-server.yaml-language-server.command = "${pkgs.yaml-language-server}/bin/yaml-language-server";
};
treefmt.programs.dprint = {
enable = true;
settings.plugins = (
pkgs.dprint-plugins.getPluginList (plugins: with plugins; [ g-plane-pretty_yaml ])
);
includes = [
"*.yaml"
"*.yml"
];
};
pre-commit.settings.hooks = {
check-yaml.enable = true;
sort-simple-yaml.enable = true;
};
};
auto-format = true;
}
];
language-server.yaml-language-server.command = "${pkgs.yaml-language-server}/bin/yaml-language-server";
};
}
);
treefmt.programs.dprint = {
enable = true;
settings.plugins = (
pkgs.dprint-plugins.getPluginList (plugins: with plugins; [ g-plane-pretty_yaml ])
);
includes = [
"*.yaml"
"*.yml"
];
};
pre-commit.settings.hooks = {
check-yaml.enable = true;
sort-simple-yaml.enable = true;
};
};
}

View file

@ -1,74 +1,61 @@
{
flake-parts-lib,
inputs,
withSystem,
...
}:
{ inputs, withSystem, ... }:
{
imports = [ inputs.home-manager.flakeModules.home-manager ];
options = {
perSystem = flake-parts-lib.mkPerSystemOption (
{ config, system, ... }:
{
config =
let
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
inputs.nur.overlays.default
inputs.nixgl.overlays.default
];
};
in
{
_module.args.pkgs = pkgs;
devshells.default = {
commands = [
{
help = " `home-manager switch` for asahi";
name = "hm-asahi";
command = "${pkgs.home-manager}/bin/home-manager switch --flake .#asahi";
category = " home-manager (Asahi)";
}
{
help = "󰸨 `home-manager switch` for asahi with backup";
name = "hm-asahi-backup";
command = "${pkgs.home-manager}/bin/home-manager switch --flake .#asahi -b backup";
category = " home-manager (Asahi)";
}
{
help = "󰘥 show home-manager documentation";
name = "man-home";
command = "${pkgs.man}/bin/man home-configuration.nix";
category = " home-manager";
}
];
packages = [ pkgs.home-manager ];
};
pre-commit.settings.excludes = [ "home-manager/vencord.nix" ];
treefmt.settings.global.excludes = [ "home-manager/vencord.nix" ];
};
# https://nix-community.github.io/home-manager/options.xhtml
flake.homeConfigurations = {
asahi = withSystem "aarch64-linux" (
{ pkgs, ... }:
inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = { inherit inputs pkgs; };
modules = [
{ nixpkgs.overlays = [ inputs.nur.overlays.default ]; }
inputs.lix-module.nixosModules.default
inputs.sops-nix.homeManagerModules.sops
inputs.stylix.homeModules.stylix
inputs.catppuccin.homeModules.catppuccin
./home.nix
];
}
);
};
config = {
# https://nix-community.github.io/home-manager/options.xhtml
flake.homeConfigurations = {
asahi = withSystem "aarch64-linux" (
{ pkgs, ... }:
inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = { inherit inputs pkgs; };
modules = [
{ nixpkgs.overlays = [ inputs.nur.overlays.default ]; }
inputs.lix-module.nixosModules.default
inputs.sops-nix.homeManagerModules.sops
inputs.stylix.homeModules.stylix
inputs.catppuccin.homeModules.catppuccin
./home.nix
];
}
);
perSystem =
{ config, system, ... }:
let
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
inputs.nur.overlays.default
inputs.nixgl.overlays.default
];
};
in
{
_module.args.pkgs = pkgs;
devshells.default = {
commands = [
{
help = " `home-manager switch` for asahi";
name = "hm-asahi";
command = "${pkgs.home-manager}/bin/home-manager switch --flake .#asahi";
category = " home-manager (Asahi)";
}
{
help = "󰸨 `home-manager switch` for asahi with backup";
name = "hm-asahi-backup";
command = "${pkgs.home-manager}/bin/home-manager switch --flake .#asahi -b backup";
category = " home-manager (Asahi)";
}
{
help = "󰘥 show home-manager documentation";
name = "man-home";
command = "${pkgs.man}/bin/man home-configuration.nix";
category = " home-manager";
}
];
packages = [ pkgs.home-manager ];
};
pre-commit.settings.excludes = [ "home-manager/vencord.nix" ];
treefmt.settings.global.excludes = [ "home-manager/vencord.nix" ];
};
};
}

View file

@ -1,32 +1,29 @@
{ flake-parts-lib, ... }:
{ ... }:
{
options = {
perSystem = flake-parts-lib.mkPerSystemOption (
{ config, pkgs, ... }:
{
config = {
devshells.default = {
commands = [
{
help = " generate age key";
name = "age-generate-key";
command = "${pkgs.uutils-coreutils-noprefix}/bin/mkdir -p ~/.config/sops/age && ${pkgs.age}/bin/age-keygen -o ~/.config/sops/age/keys.txt && ${pkgs.uutils-coreutils-noprefix}/bin/cat ~/.config/sops/age/keys.txt";
category = " SOPS";
}
{
help = " edit secrets.yaml";
name = "sops-edit";
command = "${pkgs.sops}/bin/sops edit ./sops/secrets.yaml";
category = " SOPS";
}
];
packages = [
pkgs.age
pkgs.sops
];
};
perSystem =
{ pkgs, ... }:
{
config = {
devshells.default = {
commands = [
{
help = " generate age key";
name = "age-generate-key";
command = "${pkgs.uutils-coreutils-noprefix}/bin/mkdir -p ~/.config/sops/age && ${pkgs.age}/bin/age-keygen -o ~/.config/sops/age/keys.txt && ${pkgs.uutils-coreutils-noprefix}/bin/cat ~/.config/sops/age/keys.txt";
category = " SOPS";
}
{
help = " edit secrets.yaml";
name = "sops-edit";
command = "${pkgs.sops}/bin/sops edit ./sops/secrets.yaml";
category = " SOPS";
}
];
packages = [
pkgs.age
pkgs.sops
];
};
}
);
};
};
};
}