{ # core self, pkgs, system, sysLib, nixpkgs_as_input, nixpkgs_open_prs, # modules home-manager, nixVim, nixos-generators, impermanence, agenix, ragenix, serverphone, disko, lanzaboote, nix-index-database, # external dependencies user_js, treefmt-nix, templates, # my binaries shell_library, river_init_lesser, yambar_memory, yambar_cpu, }: let home_manager_config = import ../hm { inherit pkgs sysLib nixpkgs_open_prs # extra information system # bins yambar_cpu yambar_memory river_init_lesser shell_library # external deps user_js # modules impermanence nixVim nix-index-database ; }; defaultModules = [ "${nixpkgs_open_prs.nixpkgs-tfc}/nixos/modules/config/xdg/portals/termfilechooser.nix" agenix.nixosModules.default disko.nixosModules.default home-manager.nixosModules.home-manager home_manager_config impermanence.nixosModules.impermanence lanzaboote.nixosModules.lanzaboote serverphone.nixosModules.default ]; defaultSpecialArgs = { inherit templates sysLib serverphone system # nix registry nixpkgs_as_input self # extra package sources nixpkgs_open_prs ; }; treefmtEval = treefmt-nix.lib.evalModule pkgs ( {pkgs, ...}: { # Used to find the project root projectRootFile = "flake.nix"; programs = { alejandra.enable = true; rustfmt.enable = true; clang-format.enable = true; mdformat.enable = true; shfmt = { enable = true; indent_size = 4; }; shellcheck.enable = true; prettier = { settings = { arrowParens = "always"; bracketSameLine = false; bracketSpacing = true; editorconfig = true; embeddedLanguageFormatting = "auto"; endOfLine = "lf"; # experimentalTernaries = false; htmlWhitespaceSensitivity = "css"; insertPragma = false; jsxSingleQuote = true; printWidth = 80; proseWrap = "always"; quoteProps = "consistent"; requirePragma = false; semi = true; singleAttributePerLine = true; singleQuote = true; trailingComma = "all"; useTabs = false; vueIndentScriptAndStyle = false; tabWidth = 4; overrides = { files = ["*.js"]; options.tabwidth = 2; }; }; }; stylua.enable = true; ruff = { enable = true; format = true; }; taplo.enable = true; }; settings = { global.excludes = ["CHANGELOG.md"]; formatter = { clang-format = { options = ["--style" "GNU"]; }; shfmt = { includes = ["*.bash"]; }; }; }; } ); nixosConfigurations = import ./nixosConfigurations { inherit system pkgs nixpkgs_as_input # configs defaultModules defaultSpecialArgs ; }; in { inherit nixosConfigurations; checks."${system}" = { inherit (self.packages."${system}") nvim ; formatting = treefmtEval.config.build.check self; }; legacyPackages."${system}" = pkgs; packages."${system}" = import ./packages { inherit nixos-generators defaultSpecialArgs defaultModules pkgs sysLib system nixVim self shell_library ; inherit (pkgs) lib; }; formatter."${system}" = treefmtEval.config.build.wrapper; apps."${system}" = import ./apps {inherit self system;}; devShells."${system}" = { default = pkgs.mkShell { packages = with pkgs; [ # secure boot sbctl # other cocogitto git-bug # secrets ragenix.packages."${system}".default git-crypt # shell shfmt # TODO: Integrate this into nvim <2023-10-31> # rust rustfmt cargo # nix alejandra # update generate_firefox_extensions # needed for the firefox extension update script update-vim-plugins ]; }; }; }