diff --git a/checks/default.nix b/checks/default.nix index 66d5b0b..526f8d1 100644 --- a/checks/default.nix +++ b/checks/default.nix @@ -4,23 +4,17 @@ pkgs, deployPkgs, ... -}: +}@inputs: { ${system} = { - # Check project formatting - format = pkgs.runCommand "nixfmt-check" { } '' - set -euo pipefail - cd ${self} - ${self.formatter.${system}}/bin/formatter . --check - mkdir $out - ''; + # TODO: Check project formatting nixos-modules = pkgs.callPackage ./nixos-modules { inherit (self.lib) getSubDirs isFolderWithFile; }; - #TODO(#29): Integration/System tests + nixos-configurations = import ./nixos-configurations inputs; # Import deploy-rs tests } // (deployPkgs.deploy-rs.lib.deployChecks self.deploy); diff --git a/checks/nixos-configurations/default.nix b/checks/nixos-configurations/default.nix new file mode 100644 index 0000000..e05772d --- /dev/null +++ b/checks/nixos-configurations/default.nix @@ -0,0 +1,4 @@ +{ self, pkgs, ... }: +pkgs.linkFarmFromDrvs "all" ( + pkgs.lib.mapAttrsToList (n: v: v.config.system.build.toplevel) self.nixosConfigurations +) diff --git a/checks/packages/default.nix b/checks/packages/default.nix new file mode 100644 index 0000000..dbd8049 --- /dev/null +++ b/checks/packages/default.nix @@ -0,0 +1,5 @@ +{ self, pkgs, ... }: +let + inherit (pkgs.lib) attrValues; +in +pkgs.linkFarmFromDrvs "all" (attrValues self.packages) diff --git a/deploy/docs-ops/default.nix b/deploy/docs-ops/default.nix index 01c25d1..7fcf9ae 100644 --- a/deploy/docs-ops/default.nix +++ b/deploy/docs-ops/default.nix @@ -1,6 +1,5 @@ { deployPkgs, - pkgs, self, system, ... diff --git a/flake.lock b/flake.lock index 18386cf..efd9243 100644 --- a/flake.lock +++ b/flake.lock @@ -111,10 +111,11 @@ ] }, "locked": { - "lastModified": 1737552783, - "narHash": "sha256-pJ2lp36L3++a5HtdN7ULcVpdB4j7yo90TDayWuAO+T8=", - "rev": "33cf80043c64ddd6882268430454e3cbe98b692b", - "revCount": 11, + "lastModified": 1742849713, + "narHash": "sha256-EH3vvMdalGxxvYt3tZI4K4RKT/YAh7XejYYrf/jZ0N8=", + "ref": "refs/heads/main", + "rev": "f79080b8802eec4463bb4a25c64f82f73e6e31db", + "revCount": 12, "type": "git", "url": "file:./private" }, diff --git a/flake.nix b/flake.nix index d9dae25..5c19098 100644 --- a/flake.nix +++ b/flake.nix @@ -23,7 +23,12 @@ }; outputs = - { nixpkgs-nixos-unstable, deploy-rs, ... }@inputs: + { + self, + nixpkgs-nixos-unstable, + deploy-rs, + ... + }@inputs: let system = "x86_64-linux"; # Packages for development and build process @@ -40,22 +45,79 @@ }) ]; }; - importParams = inputs // { - inherit pkgs; - inherit deployPkgs; - inherit system; + importParams = { + inherit (inputs) + deploy-rs + disko + nixpkgs-nixos-stable + sops-nix + private + ; + inherit pkgs deployPkgs system; + flakeSelf = self; }; in { - checks = import ./checks/default.nix importParams; - deploy = import ./deploy/default.nix importParams; - devShells = import ./dev-shells/default.nix importParams; - formatter.${system} = pkgs.writeShellScriptBin "formatter" '' - ${pkgs.findutils}/bin/find $1 -type f -name '*.nix' -exec ${pkgs.nixfmt-rfc-style}/bin/nixfmt ''${@:2} {} + - ''; - nixosConfigurations = import ./nixos-configurations/default.nix importParams; - nixosModules = import ./nixos-modules/default.nix importParams; - packages = import ./packages/default.nix importParams; - lib = import ./lib/default.nix importParams; + checks = import ./checks/default.nix ( + importParams + // { + self = { + inherit (self) + lib + packages + nixosModules + nixosConfigurations + deploy + ; + }; + } + ); + deploy = import ./deploy/default.nix ( + importParams + // { + self = { + inherit (self) + lib + packages + nixosModules + nixosConfigurations + ; + }; + } + ); + devShells = import ./dev-shells/default.nix ( + importParams + // { + self = { + inherit (self) lib packages; + }; + } + ); + formatter.${system} = pkgs.nixfmt-tree; + nixosConfigurations = import ./nixos-configurations/default.nix ( + importParams + // { + self = { + inherit (self) lib packages nixosModules; + }; + } + ); + nixosModules = import ./nixos-modules/default.nix ( + importParams + // { + self = { + inherit (self) lib packages; + }; + } + ); + packages = import ./packages/default.nix ( + importParams + // { + self = { + inherit (self) lib packages; + }; + } + ); + lib = import ./lib/default.nix { inherit pkgs; }; }; } diff --git a/nixos-configurations/default.nix b/nixos-configurations/default.nix index 00253e0..2aac144 100644 --- a/nixos-configurations/default.nix +++ b/nixos-configurations/default.nix @@ -7,27 +7,23 @@ ... }@inputs: let + inherit (pkgs.lib) genAttrs; + inherit (nixpkgs-nixos-stable.lib) nixosSystem; configs = self.lib.foldersWithNix ./.; in -pkgs.lib.genAttrs configs ( +genAttrs configs ( config: - nixpkgs-nixos-stable.lib.nixosSystem { + nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ - self.nixosModules.default - ./${config}/default.nix disko.nixosModules.disko sops-nix.nixosModules.sops - ( - { ... }: - { - system.extraSystemBuilderCmds = "ln -s ${self} $out/nixos-configuration"; - imports = [ ./secrets.nix ]; - } - ) + self.nixosModules.default + ./${config}/default.nix + ./secrets.nix ]; } ) diff --git a/nixos-configurations/lindberg-build/applications/nixpkgs-cache.nix b/nixos-configurations/lindberg-build/applications/nixpkgs-cache.nix index f097544..66807ed 100644 --- a/nixos-configurations/lindberg-build/applications/nixpkgs-cache.nix +++ b/nixos-configurations/lindberg-build/applications/nixpkgs-cache.nix @@ -1,8 +1,7 @@ -{ config, pkgs, ... }: +{ config, ... }: { qois.nixpkgs-cache = { enable = true; - hostname = "nixpkgs-cache.qo.is"; dnsResolvers = [ config.qois.meta.network.virtual.lindberg-vms-nat.hosts.lindberg.v4.ip ]; }; } diff --git a/nixos-modules/default.nix b/nixos-modules/default.nix index 0afd3b1..7c852dc 100644 --- a/nixos-modules/default.nix +++ b/nixos-modules/default.nix @@ -1,8 +1,9 @@ -inputs: { +{ private, self, ... }: +{ default = - { config, pkgs, ... }: + { ... }: { - imports = (inputs.self.lib.loadSubmodulesFrom ./.) ++ [ inputs.private.nixosModules.default ]; + imports = (self.lib.loadSubmodulesFrom ./.) ++ [ private.nixosModules.default ]; }; } diff --git a/nixos-modules/nixpkgs-cache/default.nix b/nixos-modules/nixpkgs-cache/default.nix index 12c55ef..aaea877 100644 --- a/nixos-modules/nixpkgs-cache/default.nix +++ b/nixos-modules/nixpkgs-cache/default.nix @@ -16,6 +16,7 @@ with lib; hostname = mkOption { type = types.str; example = "mycache.myhost.org"; + default = "nixpkgs-cache.qo.is"; description = "Hostname, under which the cache is served"; }; diff --git a/nixos-modules/system/default.nix b/nixos-modules/system/default.nix index ed0dfb5..6742c53 100644 --- a/nixos-modules/system/default.nix +++ b/nixos-modules/system/default.nix @@ -57,7 +57,7 @@ settings = let substituters = [ - "https://${inputs.self.nixosConfigurations.lindberg-build.config.qois.nixpkgs-cache.hostname}?priority=39" + "https://${config.qois.nixpkgs-cache.hostname}?priority=39" "https://cache.nixos.org?priority=40" "https://attic.qo.is/qois-infrastructure" ]; diff --git a/nixos-modules/system/overlays.nix b/nixos-modules/system/overlays.nix index f89be8f..ead7458 100644 --- a/nixos-modules/system/overlays.nix +++ b/nixos-modules/system/overlays.nix @@ -7,6 +7,5 @@ }: { - nixpkgs.overlays = [ (import ../../overlays) ]; nix.nixPath = options.nix.nixPath.default; } diff --git a/overlays/default.nix b/overlays/default.nix deleted file mode 100644 index 430b766..0000000 --- a/overlays/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -self: super: { - lib = (super.lib or { }) // { - qois = import ../lib { lib = self.lib; }; - }; -} diff --git a/packages/default.nix b/packages/default.nix index c4dc1bf..1e991b9 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -1,37 +1,28 @@ { self, + flakeSelf, system, + private, pkgs, ... }: -with pkgs.lib; +let + inherit (self.lib) foldersWithNix; + inherit (pkgs.lib) + path + genAttrs + ; +in { - ${system} = - let - packages = pipe (self.lib.foldersWithNix ./.) [ - (map (name: { - inherit name; - path = path.append ./. "./${name}/default.nix"; - })) - (map ( - { name, path }: - { - inherit name; - value = pkgs.callPackage path { - inherit self; - inherit system; - }; - } - )) - listToAttrs - ]; - in - packages - // { - default = - let - nixosConfigs = mapAttrsToList (n: v: v.config.system.build.toplevel) self.nixosConfigurations; - in - pkgs.linkFarmFromDrvs "all" (nixosConfigs ++ (attrValues packages)); - }; + ${system} = genAttrs (foldersWithNix ./.) ( + name: + pkgs.callPackage (path.append ./. "./${name}/default.nix") { + inherit + self + flakeSelf + system + private + ; + } + ); } diff --git a/packages/deploy-qois/default.nix b/packages/deploy-qois/default.nix index ee3f0ac..ed647ef 100644 --- a/packages/deploy-qois/default.nix +++ b/packages/deploy-qois/default.nix @@ -1,6 +1,6 @@ { deploy-rs, - self, + flakeSelf, writeShellApplication, ... }: @@ -9,6 +9,6 @@ writeShellApplication { meta.description = "Deploy configuration to specificed targets."; runtimeInputs = [ deploy-rs ]; text = '' - deploy --interactive --targets "''${@:-${self}}" + deploy --interactive --targets "''${@:-${flakeSelf}}" ''; } diff --git a/packages/docs/default.nix b/packages/docs/default.nix index f16736d..66f7dd9 100644 --- a/packages/docs/default.nix +++ b/packages/docs/default.nix @@ -3,12 +3,12 @@ mdbook-plantuml, mdbook, plantuml, - self, + flakeSelf, stdenv, ... }: let - version = self.rev or self.dirtyRev; + version = flakeSelf.rev or flakeSelf.dirtyRev; in stdenv.mkDerivation { inherit version; @@ -19,6 +19,6 @@ stdenv.mkDerivation { mdbook-plantuml plantuml ]; - src = self; + src = flakeSelf; buildPhase = "mdbook build --dest-dir $out"; } diff --git a/packages/sops-config/default.nix b/packages/sops-config/default.nix index 1daf54a..0fc0344 100644 --- a/packages/sops-config/default.nix +++ b/packages/sops-config/default.nix @@ -3,7 +3,7 @@ gnupg, lib, runCommand, - self, + private, ssh-to-age, writeText, ... @@ -13,7 +13,7 @@ let metaHostConfigs = import ../../defaults/meta/hosts.nix { }; userPgpKeys = let - keysFolder = "${self.inputs.private}/sops_keys"; + keysFolder = "${private}/sops_keys"; gpgFingerprintsFile = runCommand "userPgpKeys" { diff --git a/private b/private index 33cf800..f79080b 160000 --- a/private +++ b/private @@ -1 +1 @@ -Subproject commit 33cf80043c64ddd6882268430454e3cbe98b692b +Subproject commit f79080b8802eec4463bb4a25c64f82f73e6e31db