Fix other various issues
This commit is contained in:
parent
43eab988cf
commit
d22323535c
6 changed files with 63 additions and 15 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,4 +1,4 @@
|
||||||
.direnv
|
.direnv
|
||||||
.helix
|
.helix
|
||||||
.vale/styles/config/vocabularies/General
|
|
||||||
.pre-commit-config.yaml
|
.pre-commit-config.yaml
|
||||||
|
.vale/styles/config/vocabularies/General/
|
||||||
|
|
23
README.md
23
README.md
|
@ -1,13 +1,26 @@
|
||||||
# Laptop configuration
|
# Laptop configuration
|
||||||
|
|
||||||
This repository has the Nix home-manager configuration for my laptop, allowing me to manage a user configuration with reproducibility on other machines. It currently operates on a foreign Linux distribution (Fedora Asahi Remix) with plans to switch to NixOS when time allows and to make it reusable for other systems. `direnv` automatically loads the environment for running commands for this Flake.
|
This repository has the Nix home-manager configuration for my laptop, allowing
|
||||||
|
me to manage a user configuration with reproducibility on other machines. It
|
||||||
|
currently operates on a foreign Linux distribution (Fedora Asahi Remix) with
|
||||||
|
plans to switch to NixOS when time allows and to make it reusable for other
|
||||||
|
systems. `direnv` automatically loads the environment for running commands for
|
||||||
|
this Flake.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- **`home-manager`** - Defines the user environment
|
- **`home-manager`** - Defines the user environment
|
||||||
- **`flake-parts`** - Makes the Flake modular and reusable
|
- **`flake-parts`** - Makes the Flake modular and reusable
|
||||||
- **`sops`** - Encrypts secrets
|
- **`sops`** - Encrypts secrets
|
||||||
- **`treefmt`** (with Helix integration) - Automatically formats this repository when modifying it, with features to check the flake for formatting consistency
|
- **`treefmt`** (with Helix integration) - Automatically formats this repository
|
||||||
- **Language Server Protocol (LSP)** - Has language servers for file formats used in this repository; integrates with Helix text editor and fully managed by Nix with each language's configuration in its own file
|
when modifying it, with features to check the flake for formatting consistency
|
||||||
- **AI** - Uses Nix home-manager integrations for Codex and `aichat` for querying Large Language Models (LLMs) in the CLI and in Git repositories
|
- **Language Server Protocol (LSP)** - Has language servers for file formats
|
||||||
- **Language tools** - Checks for grammatical and styling issues using Vale, Harper, LTeX, and Typos, centralizing the custom dictionary for these tools in the Nix configuration
|
used in this repository; integrates with Helix text editor and fully managed
|
||||||
|
by Nix with each language's configuration in its own file
|
||||||
|
- **AI** - Uses Nix home-manager integrations for Codex and `aichat` for
|
||||||
|
querying Large Language Models (LLMs) in the CLI and in Git repositories
|
||||||
|
- **Language tools** - Checks for grammatical and styling issues using Vale,
|
||||||
|
Harper, LTeX, and Typos, centralizing the custom dictionary for these tools in
|
||||||
|
the Nix configuration
|
||||||
|
- **Git pre-commit hooks** - Lints the files before making a commit, both with
|
||||||
|
programming and natural languages
|
||||||
|
|
31
flake.nix
31
flake.nix
|
@ -61,6 +61,26 @@
|
||||||
perSystem =
|
perSystem =
|
||||||
{ system, config, ... }:
|
{ system, config, ... }:
|
||||||
let
|
let
|
||||||
|
excludes = [
|
||||||
|
".vale/*"
|
||||||
|
"home/vencord.nix"
|
||||||
|
];
|
||||||
|
deepMerge =
|
||||||
|
lhs: rhs:
|
||||||
|
lhs
|
||||||
|
// rhs
|
||||||
|
// (builtins.mapAttrs (
|
||||||
|
rName: rValue:
|
||||||
|
let
|
||||||
|
lValue = lhs.${rName} or null;
|
||||||
|
in
|
||||||
|
if builtins.isAttrs lValue && builtins.isAttrs rValue then
|
||||||
|
deepMerge lValue rValue
|
||||||
|
else if builtins.isList lValue && builtins.isList rValue then
|
||||||
|
lValue ++ rValue
|
||||||
|
else
|
||||||
|
rValue
|
||||||
|
) rhs);
|
||||||
pkgs = import inputs.nixpkgs {
|
pkgs = import inputs.nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
overlays = [
|
overlays = [
|
||||||
|
@ -81,7 +101,9 @@
|
||||||
);
|
);
|
||||||
language-server = builtins.foldl' (acc: cfg: acc // (cfg.helix.language-server or { })) { } configs;
|
language-server = builtins.foldl' (acc: cfg: acc // (cfg.helix.language-server or { })) { } configs;
|
||||||
};
|
};
|
||||||
treefmtPrograms = builtins.foldl' (acc: cfg: acc // (cfg.treefmt.programs or { })) { } configs;
|
treefmtPrograms = builtins.foldl' (
|
||||||
|
acc: cfg: deepMerge acc (cfg.treefmt.programs or { })
|
||||||
|
) { } configs;
|
||||||
preCommitHooks = builtins.foldl' (acc: cfg: acc // (cfg.pre-commit or { })) { } configs;
|
preCommitHooks = builtins.foldl' (acc: cfg: acc // (cfg.pre-commit or { })) { } configs;
|
||||||
devshellConfigs = {
|
devshellConfigs = {
|
||||||
commands = builtins.concatMap (cfg: cfg.devshell.commands) (
|
commands = builtins.concatMap (cfg: cfg.devshell.commands) (
|
||||||
|
@ -170,11 +192,6 @@
|
||||||
${pkgs.uutils-coreutils-noprefix}/bin/ln -fs ${helixLanguagesFile} ./.helix/languages.toml
|
${pkgs.uutils-coreutils-noprefix}/bin/ln -fs ${helixLanguagesFile} ./.helix/languages.toml
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
pre_commit = {
|
|
||||||
text = ''
|
|
||||||
${config.pre-commit.installationScript}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -189,11 +206,13 @@
|
||||||
check-symlinks.enable = true;
|
check-symlinks.enable = true;
|
||||||
flake-checker.enable = true;
|
flake-checker.enable = true;
|
||||||
};
|
};
|
||||||
|
excludes = excludes;
|
||||||
};
|
};
|
||||||
# https://flake.parts/options/treefmt-nix.html
|
# https://flake.parts/options/treefmt-nix.html
|
||||||
treefmt = {
|
treefmt = {
|
||||||
projectRootFile = "flake.nix";
|
projectRootFile = "flake.nix";
|
||||||
programs = treefmtPrograms;
|
programs = treefmtPrograms;
|
||||||
|
settings.global.excludes = excludes;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,10 @@ in
|
||||||
configPath = typosConfigFile.outPath;
|
configPath = typosConfigFile.outPath;
|
||||||
locale = "en-us";
|
locale = "en-us";
|
||||||
};
|
};
|
||||||
|
excludes = [
|
||||||
|
".vale/*"
|
||||||
|
"home/vencord.nix"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
vale.enable = true;
|
vale.enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,7 +24,14 @@
|
||||||
};
|
};
|
||||||
treefmt.programs.dprint = {
|
treefmt.programs.dprint = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings.plugins = [ "dprint-plugin-markdown" ];
|
settings = {
|
||||||
|
plugins = (pkgs.dprint-plugins.getPluginList (plugins: with plugins; [ dprint-plugin-markdown ]));
|
||||||
|
markdown = {
|
||||||
|
lineWidth = 80;
|
||||||
|
textWrap = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
includes = [ "*.md" ];
|
||||||
};
|
};
|
||||||
pre-commit = {
|
pre-commit = {
|
||||||
markdownlint.enable = true;
|
markdownlint.enable = true;
|
||||||
|
|
|
@ -21,10 +21,15 @@
|
||||||
};
|
};
|
||||||
treefmt.programs.dprint = {
|
treefmt.programs.dprint = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings.plugins = [ "g-plane-pretty_yaml" ];
|
settings.plugins = (
|
||||||
|
pkgs.dprint-plugins.getPluginList (plugins: with plugins; [ g-plane-pretty_yaml ])
|
||||||
|
);
|
||||||
|
includes = [
|
||||||
|
"*.yaml"
|
||||||
|
"*.yml"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
pre-commit = {
|
pre-commit = {
|
||||||
check-yaml.enable = true;
|
check-yaml.enable = true;
|
||||||
sort-simple-yaml.enable = true;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue