diff options
Diffstat (limited to '')
| -rw-r--r-- | flake.nix | 184 | ||||
| -rw-r--r-- | flake/default.nix | 118 | ||||
| -rw-r--r-- | flake/packages/default.nix | 97 | ||||
| -rw-r--r-- | treefmt.nix (renamed from flake/treefmt.nix) | 0 |
4 files changed, 108 insertions, 291 deletions
@@ -1,104 +1,136 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de> -# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. { - description = "A NixOS System Configuration"; + description = "A NixOS Configuration"; inputs = {}; outputs = {self, ...}: let - sources = import ./unflake.nix; - - # core - nixpkgs = sources.nixpkgs; - nixpkgs-stable = sources.nixpkgs-stable; - library = sources.library; - # modules - home-manager = sources.home-manager; - nixos-generators = sources.nixos-generators; - impermanence = sources.impermanence; - agenix = sources.agenix; - serverphone = sources.serverphone; - disko = sources.disko; - lanzaboote = sources.lanzaboote; - nixvim = sources.nixvim; - nix-index-database = sources.nix-index-database; - # external dependencies - treefmt-nix = sources.treefmt-nix; - templates = sources.templates; - # my binaries - qmk_firmware = sources.qmk_firmware; - turtle = sources.turtle; + raw_sources = import ./unflake.nix; system = "x86_64-linux"; + # Filter out the nixpkgs's from the sources, so we always use the `packageSets`. + sources = builtins.removeAttrs raw_sources ["nixpkgs-stable" "nixpkgs-unstable" "library"]; + packageSets = rec { - stable = nixpkgs-stable.legacyPackages.${system}; - unstable = nixpkgs.legacyPackages.${system}; + stable = raw_sources.nixpkgs-stable.legacyPackages.${system}; + unstable = raw_sources.nixpkgs-unstable.legacyPackages.${system}; - soispha = import ./pkgs { - inherit libraries; - pkgs = unstable; + in_tree = import ./pkgs { + unstable_pkgs = unstable; + stable_pkgs = stable; + inherit extra_lib; }; }; + lib = packageSets.unstable.lib; + extra_lib = raw_sources.library.nixLib; - libraries = rec { - nix = packageSets.unstable.lib; - base = import ./lib {lib = nix;}; - extra = library.nixLib; - }; - - modules = { - inherit - home-manager - nixvim - nixos-generators - impermanence - agenix - serverphone - disko - lanzaboote - nix-index-database - ; - }; - - externalDependencies = { + extra_modules = [ + sources.agenix.nixosModules.default + sources.turtle.nixosModules.nixos + sources.disko.nixosModules.default + sources.impermanence.nixosModules.impermanence + sources.simple-nixos-mailserver.nixosModule + sources.rocie.nixosModules.default + ]; + module_args = { inherit - treefmt-nix - templates + sources + # extra package sources + openPRsNixpkgs + packageSets + # extra information + system ; }; - - externalBinaries = { + special_args = { inherit - qmk_firmware - turtle + self + # Needs to be a special argument, because it is used for determining the `imports` + # value (via `mkByName`). + extra_lib ; }; openPRsNixpkgs = {}; - outputs = import ./flake { + treefmtEval = import ./treefmt.nix { + inherit (sources) treefmt-nix; + pkgs = packageSets.unstable; + }; + + hosts = import ./hosts { inherit self - sources - nixpkgs + extra_lib + module_args + special_args + extra_modules system - openPRsNixpkgs - packageSets - libraries - modules - externalDependencies - externalBinaries + ; + inherit + (raw_sources) + nixpkgs-unstable + nixpkgs-stable + deploy-rs ; }; - in - outputs; + + deployChecks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) sources.deploy-rs.lib; + tests = lib.attrsets.filterAttrs (_: v: !(v ? meta && v.meta.broken)) (import ./tests + { + inherit sources packageSets extra_modules module_args special_args extra_lib; + }); + # myPkgsFlat = + # builtins.listToAttrs + # # Filter out the `override` and `overrideDerivation` functions + # (builtins.filter + # ({ name, value, }: lib.attrsets.isDerivation value) + # (lib.lists.flatten + # (lib.attrsets.mapAttrsToList + # (name: value: + # if lib.attrsets.isDerivation value then + # [ { inherit name value; } ] + # else + # lib.attrsets.mapAttrsToList + # (name: value: { inherit name value; }) + # value + # ) + # packageSets.in_tree + # ) + # ) + # ); + in { + checks."${system}" = + extra_lib.warnMerge + deployChecks."${system}" + (extra_lib.warnMerge + tests + {formatting = treefmtEval.config.build.check self;} + "the flake checks and formatting") + "the flake checks and deploy rs checks"; + + legacyPackages."${system}" = packageSets.unstable; + + packages."${system}" = packageSets.in_tree; + + formatter."${system}" = treefmtEval.config.build.wrapper; + + devShells."${system}" = { + default = packageSets.unstable.mkShell { + packages = [ + packageSets.unstable.deploy-rs + + # Used to update the stalwart-mail spamfilter + packageSets.unstable.nix-update + + (sources.agenix.packages."${system}".default.override { + nix = packageSets.unstable.lixPackageSets.latest.lix; + }) + ]; + }; + }; + + deploy.nodes = hosts.nodes; + inherit (hosts) nixosConfigurations; + }; } diff --git a/flake/default.nix b/flake/default.nix deleted file mode 100644 index 099a4568..00000000 --- a/flake/default.nix +++ /dev/null @@ -1,118 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -{ - self, - sources, - nixpkgs, - system, - openPRsNixpkgs, - packageSets, - libraries, - modules, - externalDependencies, - externalBinaries, -}: let - # Unpack common stuff. - nixLib = libraries.extra; - pkgs = packageSets.unstable; - - treefmtEval = import ./treefmt.nix { - inherit (externalDependencies) treefmt-nix; - inherit pkgs; - }; - - nixosConfigurations = import ../hosts { - inherit - self - sources - nixpkgs - system - openPRsNixpkgs - packageSets - libraries - modules - externalDependencies - externalBinaries - ; - }; - - tests = import ../tests { - inherit pkgs nixLib openPRsNixpkgs system; - myPkgs = packageSets.soispha; - inherit (pkgs) lib; - extraModules = { - nixvim = { - homeManagerModule = modules.nixVim.homeModules.nixvim; - }; - agenix = modules.agenix.nixosModules.default; - disko = modules.disko.nixosModules.default; - serverphone = modules.serverphone.nixosModules.default; - inherit (modules.home-manager.nixosModules) home-manager; - inherit (modules.impermanence.nixosModules) impermanence; - inherit (modules.lanzaboote.nixosModules) lanzaboote; - }; - }; -in { - inherit nixosConfigurations; - checks."${system}" = - nixLib.warnMerge { - inherit - (self.packages."${system}") - nvim - ; - formatting = treefmtEval.config.build.check self; - } - tests "flake checks"; - - # legacyPackages."${system}" = pkgs; - - packages."${system}" = import ./packages { - inherit - pkgs - self - ; - myPkgs = packageSets.soispha; - }; - - formatter."${system}" = treefmtEval.config.build.wrapper; - - baseLib."${system}" = libraries.base; - - devShells."${system}" = { - default = pkgs.mkShell { - packages = [ - # secure boot - pkgs.sbctl - - # other - pkgs.cocogitto - pkgs.git-bug - pkgs.reuse - pkgs.html2text - - # secrets - pkgs.ragenix - pkgs.rage - - # shell - pkgs.shfmt - - # rust - pkgs.rustfmt - pkgs.cargo - - # nix - pkgs.alejandra - pkgs.deadnix - pkgs.nvd - ]; - }; - }; -} diff --git a/flake/packages/default.nix b/flake/packages/default.nix deleted file mode 100644 index 9c67eda3..00000000 --- a/flake/packages/default.nix +++ /dev/null @@ -1,97 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -{ - pkgs, - self, - myPkgs, - ... -}: let - inherit (pkgs) lib; - - run_test_description = pkgs.callPackage ../../tests/infrastructure/run.nix {}; - - nvim = - builtins.mapAttrs ( - name: value: let - config = value.config.home-manager.users.soispha.programs.nixvim; - - # NOTE: This is copied from `nixvim`, and could be achieved by setting - # `config.wrapRc` to `true`. But I have yet to find a way to set this in this - # context, but not in the general context. <2024-11-09> - # NOTE: I'm not sure why we need `nvimPackage` instead of just the `package` - # attribute here, but the bare `package` attribute does not provide a `override` - # function. <2025-02-02> - wrapped = config.build.nvimPackage.override (prev: { - wrapperArgs = - ( - if lib.isString prev.wrapperArgs - then prev.wrapperArgs - else lib.escapeShellArgs prev.wrapperArgs - ) - + " " - + ''--add-flags -u --add-flags "${config.build.initFile}"''; - wrapRc = false; - }); - in - wrapped - ) - self.nixosConfigurations; - - output_neovim = lib.attrsets.mapAttrs' (name: value: lib.attrsets.nameValuePair "nvim_${name}" value) nvim; - - myPkgsFlat = - builtins.listToAttrs - # Filter out the `override` and `overrideDerivation` functions - (builtins.filter ({ - name, - value, - }: - lib.attrsets.isDerivation value) (lib.lists.flatten - ( - lib.attrsets.mapAttrsToList (name: value: - if lib.attrsets.isDerivation value - then [ - { - inherit name value; - } - ] - else - lib.attrsets.mapAttrsToList (name: value: { - inherit name value; - }) - value) - myPkgs - ))); -in - { - # install-iso = nixos-generators.nixosGenerate { - # system = "x86_64-linux"; - # specialArgs = defaultSpecialArgs; - # modules = [ - # ../../hosts/marduk - # ]; - # format = "install-iso"; - # }; - - # gpg-iso = nixos-generators.nixosGenerate { - # system = "x86_64-linux"; - # specialArgs = defaultSpecialArgs; - # modules = - # [ - # ../../hosts/isimud - # ] - # ++ defaultModules; - # format = "iso"; - # }; - nvim = nvim.tiamat; - inherit run_test_description; - } - // output_neovim - // myPkgsFlat diff --git a/flake/treefmt.nix b/treefmt.nix index 703a85e8..703a85e8 100644 --- a/flake/treefmt.nix +++ b/treefmt.nix |
