diff --git a/.envrc b/.envrc index 8cd723d..8de7b48 100644 --- a/.envrc +++ b/.envrc @@ -1,3 +1,4 @@ watch_dir ./base +watch_dir ./sops watch_file ./home-manager/default.nix use flake diff --git a/base/base/default.nix b/base/base/default.nix index f3c5cb6..42ef490 100644 --- a/base/base/default.nix +++ b/base/base/default.nix @@ -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"; + }; } diff --git a/base/languages/en-us/default.nix b/base/languages/en-us/default.nix index 990bf38..1c91740 100644 --- a/base/languages/en-us/default.nix +++ b/base/languages/en-us/default.nix @@ -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} + # ''; + }; + }; } diff --git a/base/languages/markdown/default.nix b/base/languages/markdown/default.nix index 1e849fd..f3fc543 100644 --- a/base/languages/markdown/default.nix +++ b/base/languages/markdown/default.nix @@ -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; + }; } diff --git a/base/languages/nix/default.nix b/base/languages/nix/default.nix index 8e3b179..f590445 100644 --- a/base/languages/nix/default.nix +++ b/base/languages/nix/default.nix @@ -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; }; - } - ); + }; } diff --git a/base/languages/toml/default.nix b/base/languages/toml/default.nix index 1afedc7..dc530b9 100644 --- a/base/languages/toml/default.nix +++ b/base/languages/toml/default.nix @@ -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; + }; } diff --git a/base/languages/yaml/default.nix b/base/languages/yaml/default.nix index c746702..06f08aa 100644 --- a/base/languages/yaml/default.nix +++ b/base/languages/yaml/default.nix @@ -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; + }; + }; } diff --git a/home-manager/default.nix b/home-manager/default.nix index 85b9a19..34cf340 100644 --- a/home-manager/default.nix +++ b/home-manager/default.nix @@ -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" ]; }; - }; } diff --git a/sops/default.nix b/sops/default.nix index 13cd816..067c88f 100644 --- a/sops/default.nix +++ b/sops/default.nix @@ -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 + ]; }; - } - ); - }; + }; + }; }