1
0
Fork 0

Add configuration options for languages

This commit is contained in:
Ethan Reece 2025-07-14 09:30:37 -05:00
parent 461763d132
commit e159b135ff
Signed by: me
GPG key ID: DD8CE04D5D8FF832
10 changed files with 296 additions and 270 deletions

View file

@ -1,35 +1,33 @@
{ flake-parts-lib, lib, ... }:
let
inherit (lib) mkOption types;
in
{
imports = [ ../base ];
options.perSystem = flake-parts-lib.mkPerSystemOption (
{ config, pkgs, ... }:
{
options.helix = {
options.editors.helix = {
enable = lib.mkEnableOption "Helix";
# https://github.com/helix-editor/helix/blob/master/languages.toml
# https://helix-editor.vercel.app/reference/formatters
# https://docs.helix-editor.com/lang-support.html
languages = mkOption {
languages = lib.mkOption {
description = ''
Configuration for Helix `languages.toml`.
'';
# type = types.attrs;
type = types.submodule {
type = lib.types.submodule {
options = {
language = mkOption {
language = lib.mkOption {
description = ''
`language` in `languages.toml`.
'';
type = types.listOf types.attrs;
type = lib.types.listOf lib.types.attrs;
default = [ ];
};
language-server = mkOption {
language-server = lib.mkOption {
description = ''
`language-server` in `languages.toml`.
'';
type = types.attrs;
type = lib.types.attrs;
default = { };
};
};
@ -37,13 +35,13 @@ in
default = { };
};
};
config.devshells.default =
config.devshells.default = lib.mkIf config.editors.helix.enable (
let
tomlFormatter = pkgs.formats.toml { };
helix = {
languages = {
name = "languages.toml";
text = config.helix.languages;
text = config.editors.helix.languages;
path = tomlFormatter.generate "languages.toml" helix.languages.text;
};
directory = {
@ -72,7 +70,8 @@ in
${pkgs.uutils-coreutils-noprefix}/bin/rm -rf ./${helix.directory.name}
${pkgs.uutils-coreutils-noprefix}/bin/ln -fsn ${helix.directory.path} ./${helix.directory.name}
'';
};
}
);
}
);
}

View file

@ -1,11 +1,8 @@
{ ... }:
let
entries = builtins.attrNames (builtins.readDir ./.);
configs = builtins.filter (dir: builtins.pathExists (./. + "/${dir}/default.nix")) entries;
modules = builtins.filter (dir: builtins.pathExists (./. + "/${dir}/default.nix")) entries;
in
{
imports = [
../base
../helix
] ++ builtins.map (name: (./. + "/${name}")) configs;
imports = builtins.map (name: (./. + "/${name}")) modules;
}

View file

@ -1,4 +1,4 @@
{ ... }:
{ flake-parts-lib, lib, ... }:
let
dictionary = [
"Asahi"
@ -14,8 +14,13 @@ let
];
in
{
perSystem =
options.perSystem = flake-parts-lib.mkPerSystemOption (
{ pkgs, ... }:
{
options.languages.en-us = {
enable = lib.mkEnableOption "en_US";
};
config =
let
tomlFormatter = pkgs.formats.toml { };
vale = {
@ -88,7 +93,7 @@ in
};
in
{
helix.languages.language-server = {
editors.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";
@ -148,4 +153,6 @@ in
# '';
};
};
}
);
}

View file

@ -1,10 +1,12 @@
{ ... }:
{ flake-parts-lib, lib, ... }:
{
imports = [ ../en-us ];
perSystem =
options.perSystem = flake-parts-lib.mkPerSystemOption (
{ config, pkgs, ... }:
{
helix.languages = {
options.languages.markdown.enable = lib.mkEnableOption "Markdown";
config = {
editors.helix.languages = {
language = [
{
name = "markdown";
@ -40,4 +42,6 @@
};
pre-commit.settings.hooks.markdownlint.enable = true;
};
}
);
}

View file

@ -1,10 +1,12 @@
{ ... }:
{ flake-parts-lib, lib, ... }:
{
imports = [ ../en-us ];
perSystem =
options.perSystem = flake-parts-lib.mkPerSystemOption (
{ config, pkgs, ... }:
{
helix.languages = {
options.languages.nix.enable = lib.mkEnableOption "Nix";
config = lib.mkIf config.languages.nix.enable {
editors.helix.languages = {
language = [
{
name = "nix";
@ -31,4 +33,6 @@
strict = true;
};
};
}
);
}

View file

@ -1,10 +1,12 @@
{ ... }:
{ flake-parts-lib, lib, ... }:
{
imports = [ ../en-us ];
perSystem =
options.perSystem = flake-parts-lib.mkPerSystemOption (
{ config, pkgs, ... }:
{
helix.languages = {
options.languages.toml.enable = lib.mkEnableOption "TOML";
config = {
editors.helix.languages = {
language = [
{
name = "toml";
@ -29,4 +31,6 @@
treefmt.programs.taplo.enable = true;
pre-commit.settings.hooks.check-toml.enable = true;
};
}
);
}

View file

@ -1,10 +1,12 @@
{ ... }:
{ flake-parts-lib, lib, ... }:
{
imports = [ ../en-us ];
perSystem =
options.perSystem = flake-parts-lib.mkPerSystemOption (
{ config, pkgs, ... }:
{
helix.languages = {
options.languages.yaml.enable = lib.mkEnableOption "YAML";
config = {
editors.helix.languages = {
language = [
{
name = "yaml";
@ -41,4 +43,6 @@
sort-simple-yaml.enable = true;
};
};
}
);
}

View file

@ -47,6 +47,14 @@
perSystem =
{ pkgs, system, ... }:
{
editors.helix.enable = true;
languages = {
en-us.enable = true;
markdown.enable = true;
nix.enable = true;
toml.enable = true;
yaml.enable = true;
};
# https://flake.parts/options/devshell.html
devshells.default = {
packages = [ pkgs.forgejo-cli ];

View file

@ -567,7 +567,7 @@ in
"en-US"
"en"
];
vencord = ./vencord.nix; # TODO: Fix this
vencord = ./vencord.nix; # TODO: Make this a home-manager module
};
};
floorp = {

View file

@ -12,7 +12,6 @@
disableMinSize = false;
eagerPatches = false;
enableReactDevtools = false;
enabledThemes = [ ];
frameless = false;
macosTranslucency = false;
notifications = {