forked from pub-solar/os
Merge pull request #260 from Pacman99/format-fixes
lib: one line for arguments, drop userFlake*
This commit is contained in:
commit
f702ca1337
10
flake.lock
10
flake.lock
|
@ -81,7 +81,7 @@
|
||||||
"utils": "utils_2"
|
"utils": "utils_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"narHash": "sha256-aGpcPxOBIPnwj6uLNtpKefZjEbDkZnMHZ2mH12veHnY=",
|
"narHash": "sha256-LvO5VwFNFzb2xbmgw+fWhkrRY1KMlp5vxqQU/BqS0H8=",
|
||||||
"path": "./lib",
|
"path": "./lib",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
},
|
},
|
||||||
|
@ -280,7 +280,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"narHash": "sha256-XG4TOZObj2Wd8KiqnHgtlWjjMbJOIJB7+DxUFzMCXw8=",
|
"narHash": "sha256-Zs7dc0dNNa0Z3//+Gckxj7SKrMqVovY0xZZ1z8xWnEg=",
|
||||||
"path": "./pkgs",
|
"path": "./pkgs",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
},
|
},
|
||||||
|
@ -337,11 +337,11 @@
|
||||||
},
|
},
|
||||||
"utils_2": {
|
"utils_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1618217525,
|
"lastModified": 1618868421,
|
||||||
"narHash": "sha256-WGrhVczjXTiswQaoxQ+0PTfbLNeOQM6M36zvLn78AYg=",
|
"narHash": "sha256-vyoJhLV6cJ8/tWz+l9HZLIkb9Rd9esE7p+0RL6zDR6Y=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "c6169a2772643c4a93a0b5ac1c61e296cba68544",
|
"rev": "eed214942bcfb3a8cc09eb3b28ca7d7221e44a94",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
profileMap = list: map (profile: profile.default) (lib.flatten list);
|
profileMap = list: map (profile: profile.default) (lib.flatten list);
|
||||||
|
|
||||||
mkNodes = import ./mkNodes.nix { inherit lib; };
|
mkNodes = import ./mkNodes.nix { inherit lib; };
|
||||||
|
|
||||||
mkHosts = import ./mkHosts.nix { inherit lib; };
|
mkHosts = import ./mkHosts.nix { inherit lib; };
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
|
||||||
{ userFlakeNixOS, userFlakeSelf, userFlakeInputs }:
|
{ self, nixos, inputs, modules, ... } @ allArgs:
|
||||||
|
let args = builtins.removeAttrs allArgs [ "self" "nixos" "inputs" ]; in
|
||||||
{ modules, ... } @ args:
|
|
||||||
lib.nixosSystem (args // {
|
lib.nixosSystem (args // {
|
||||||
modules =
|
modules =
|
||||||
let
|
let
|
||||||
|
@ -15,7 +14,7 @@ lib.nixosSystem (args // {
|
||||||
(args // {
|
(args // {
|
||||||
modules = moduleList ++ [
|
modules = moduleList ++ [
|
||||||
|
|
||||||
"${userFlakeNixOS}/${modpath}/installer/cd-dvd/installation-cd-minimal-new-kernel.nix"
|
"${nixos}/${modpath}/installer/cd-dvd/installation-cd-minimal-new-kernel.nix"
|
||||||
|
|
||||||
({ config, suites, ... }: {
|
({ config, suites, ... }: {
|
||||||
|
|
||||||
|
@ -25,15 +24,15 @@ lib.nixosSystem (args // {
|
||||||
disabledModules = map (x: [ x ])
|
disabledModules = map (x: [ x ])
|
||||||
(lib.remove modules.core suites.allProfiles);
|
(lib.remove modules.core suites.allProfiles);
|
||||||
|
|
||||||
nix.registry = lib.mapAttrs (n: v: { flake = v; }) userFlakeInputs;
|
nix.registry = lib.mapAttrs (n: v: { flake = v; }) inputs;
|
||||||
|
|
||||||
isoImage.isoBaseName = "nixos-" + config.networking.hostName;
|
isoImage.isoBaseName = "nixos-" + config.networking.hostName;
|
||||||
isoImage.contents = [{
|
isoImage.contents = [{
|
||||||
source = userFlakeSelf;
|
source = self;
|
||||||
target = "/devos/";
|
target = "/devos/";
|
||||||
}];
|
}];
|
||||||
isoImage.storeContents = [
|
isoImage.storeContents = [
|
||||||
userFlakeSelf.devShell.${config.nixpkgs.system}
|
self.devShell.${config.nixpkgs.system}
|
||||||
# include also closures that are "switched off" by the
|
# include also closures that are "switched off" by the
|
||||||
# above profile filter on the local config attribute
|
# above profile filter on the local config attribute
|
||||||
fullHostConfig.system.build.toplevel
|
fullHostConfig.system.build.toplevel
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
|
||||||
{ userFlakeSelf }:
|
nixosConfigurations:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
|
@ -8,7 +8,7 @@ let
|
||||||
mapAttrs' (user: v: nameValuePair "${user}@${host}" v.home)
|
mapAttrs' (user: v: nameValuePair "${user}@${host}" v.home)
|
||||||
config.config.system.build.homes;
|
config.config.system.build.homes;
|
||||||
|
|
||||||
hmConfigs = mapAttrs mkHomes userFlakeSelf.nixosConfigurations;
|
hmConfigs = mapAttrs mkHomes nixosConfigurations;
|
||||||
|
|
||||||
in
|
in
|
||||||
foldl recursiveUpdate { } (attrValues hmConfigs)
|
foldl recursiveUpdate { } (attrValues hmConfigs)
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
|
||||||
{ userFlakeNixOS, userFlakeInputs, userFlakeSelf }:
|
{ self, nixos, inputs, dir, extern, suites, overrides, multiPkgs }:
|
||||||
|
|
||||||
{ dir, extern, suites, overrides, multiPkgs }:
|
|
||||||
let
|
let
|
||||||
defaultSystem = "x86_64-linux";
|
defaultSystem = "x86_64-linux";
|
||||||
|
|
||||||
|
@ -31,24 +29,24 @@ let
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
|
|
||||||
extraSpecialArgs = extern.userSpecialArgs // { suites = suites.user; };
|
extraSpecialArgs = extern.userSpecialArgs // { suites = suites.user; };
|
||||||
sharedModules = extern.userModules ++ (builtins.attrValues userFlakeSelf.homeModules);
|
sharedModules = extern.userModules ++ (builtins.attrValues self.homeModules);
|
||||||
};
|
};
|
||||||
users.mutableUsers = lib.mkDefault false;
|
users.mutableUsers = lib.mkDefault false;
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = lib.mkDefault true;
|
hardware.enableRedistributableFirmware = lib.mkDefault true;
|
||||||
|
|
||||||
nix.nixPath = [
|
nix.nixPath = [
|
||||||
"nixpkgs=${userFlakeNixOS}"
|
"nixpkgs=${nixos}"
|
||||||
"nixos-config=${userFlakeSelf}/lib/compat/nixos"
|
"nixos-config=${self}/lib/compat/nixos"
|
||||||
"home-manager=${userFlakeInputs.home}"
|
"home-manager=${inputs.home}"
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.pkgs = lib.mkDefault multiPkgs.${config.nixpkgs.system};
|
nixpkgs.pkgs = lib.mkDefault multiPkgs.${config.nixpkgs.system};
|
||||||
|
|
||||||
nix.registry = {
|
nix.registry = {
|
||||||
devos.flake = userFlakeSelf;
|
devos.flake = self;
|
||||||
nixos.flake = userFlakeNixOS;
|
nixos.flake = nixos;
|
||||||
override.flake = userFlakeInputs.override;
|
override.flake = inputs.override;
|
||||||
};
|
};
|
||||||
|
|
||||||
nix.package = pkgs.nixFlakes;
|
nix.package = pkgs.nixFlakes;
|
||||||
|
@ -59,13 +57,13 @@ let
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
system.configurationRevision = lib.mkIf (userFlakeSelf ? rev) userFlakeSelf.rev;
|
system.configurationRevision = lib.mkIf (self ? rev) self.rev;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Everything in `./modules/list.nix`.
|
# Everything in `./modules/list.nix`.
|
||||||
flakeModules = { imports = builtins.attrValues userFlakeSelf.nixosModules ++ extern.modules; };
|
flakeModules = { imports = builtins.attrValues self.nixosModules ++ extern.modules; };
|
||||||
|
|
||||||
cachix = let rootCachix = "${userFlakeSelf}/cachix.nix"; in
|
cachix = let rootCachix = "${self}/cachix.nix"; in
|
||||||
if builtins.pathExists rootCachix
|
if builtins.pathExists rootCachix
|
||||||
then rootCachix
|
then rootCachix
|
||||||
else { }
|
else { }
|
||||||
|
@ -84,7 +82,7 @@ let
|
||||||
networking = { inherit hostName; };
|
networking = { inherit hostName; };
|
||||||
|
|
||||||
_module.args = {
|
_module.args = {
|
||||||
self = userFlakeSelf;
|
self = self;
|
||||||
hosts = builtins.mapAttrs (_: host: host.config)
|
hosts = builtins.mapAttrs (_: host: host.config)
|
||||||
(removeAttrs hosts [ hostName ]);
|
(removeAttrs hosts [ hostName ]);
|
||||||
};
|
};
|
||||||
|
@ -97,9 +95,7 @@ let
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
lib.os.devosSystem {
|
lib.os.devosSystem {
|
||||||
inherit userFlakeNixOS userFlakeInputs userFlakeSelf;
|
inherit self nixos inputs specialArgs;
|
||||||
} {
|
|
||||||
inherit specialArgs;
|
|
||||||
system = defaultSystem;
|
system = defaultSystem;
|
||||||
modules = modules // { inherit local; };
|
modules = modules // { inherit local; };
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
|
||||||
{ userFlakeSelf }:
|
{ overlay, overlays, pkgs }:
|
||||||
|
|
||||||
{ pkgs }:
|
|
||||||
let
|
let
|
||||||
inherit (userFlakeSelf) overlay overlays;
|
|
||||||
packagesNames = lib.attrNames (overlay null null)
|
packagesNames = lib.attrNames (overlay null null)
|
||||||
++ lib.attrNames (lib.concatAttrs
|
++ lib.attrNames (lib.concatAttrs
|
||||||
(lib.attrValues
|
(lib.attrValues
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
{ lib, utils }:
|
{ lib, utils }:
|
||||||
|
|
||||||
{ userFlakeNixOS, userFlakeSelf, userFlakeInputs }:
|
{ self, nixos, inputs, extern, overrides }:
|
||||||
|
|
||||||
{ extern, overrides }:
|
|
||||||
(utils.lib.eachDefaultSystem
|
(utils.lib.eachDefaultSystem
|
||||||
(system:
|
(system:
|
||||||
let
|
let
|
||||||
overridePkgs = lib.os.pkgImport userFlakeInputs.override [ ] system;
|
overridePkgs = lib.os.pkgImport inputs.override [ ] system;
|
||||||
overridesOverlay = overrides.packages;
|
overridesOverlay = overrides.packages;
|
||||||
|
|
||||||
overlays = [
|
overlays = [
|
||||||
|
@ -17,11 +15,11 @@
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
(overridesOverlay overridePkgs)
|
(overridesOverlay overridePkgs)
|
||||||
userFlakeSelf.overlay
|
self.overlay
|
||||||
]
|
]
|
||||||
++ extern.overlays
|
++ extern.overlays
|
||||||
++ (lib.attrValues userFlakeSelf.overlays);
|
++ (lib.attrValues self.overlays);
|
||||||
in
|
in
|
||||||
{ pkgs = lib.os.pkgImport userFlakeNixOS overlays system; }
|
{ pkgs = lib.os.pkgImport nixos overlays system; }
|
||||||
)
|
)
|
||||||
).pkgs
|
).pkgs
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
let mkProfileAttrs =
|
let mkProfileAttrs =
|
||||||
/**
|
/**
|
||||||
Synopsis: mkProfileAttrs _path_
|
Synopsis: mkProfileAttrs _path_
|
||||||
|
|
||||||
Recursively collect the subdirs of _path_ containing a default.nix into attrs.
|
Recursively collect the subdirs of _path_ containing a default.nix into attrs.
|
||||||
This sets a contract, eliminating ambiguity for _default.nix_ living under the
|
This sets a contract, eliminating ambiguity for _default.nix_ living under the
|
||||||
profile directory.
|
profile directory.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
let profiles = mkProfileAttrs ./profiles; in
|
let profiles = mkProfileAttrs ./profiles; in
|
||||||
assert profiles ? core.default; 0
|
assert profiles ? core.default; 0
|
||||||
**/
|
**/
|
||||||
dir:
|
dir:
|
||||||
let
|
let
|
||||||
imports =
|
imports =
|
||||||
|
|
147
lib/flake.lock
Normal file
147
lib/flake.lock
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"deploy": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"naersk": "naersk",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"utils": "utils"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1616406726,
|
||||||
|
"narHash": "sha256-n9zmgxR03QNrvs9/fHewqE0j3SjL7Y+cglBCFu3U3rg=",
|
||||||
|
"owner": "serokell",
|
||||||
|
"repo": "deploy-rs",
|
||||||
|
"rev": "9e405fbc5ab5bacbd271fd78c6b6b6877c4d9f8d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "serokell",
|
||||||
|
"repo": "deploy-rs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"devshell": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1618523768,
|
||||||
|
"narHash": "sha256-Gev9da35pHUey3kGz/zrJFc/9ICs++vPCho7qB1mqd8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "devshell",
|
||||||
|
"rev": "709fe4d04a9101c9d224ad83f73416dce71baf21",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "devshell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1606424373,
|
||||||
|
"narHash": "sha256-oq8d4//CJOrVj+EcOaSXvMebvuTkmBJuT5tzlfewUnQ=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "99f1c2157fba4bfe6211a321fd0ee43199025dbf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"naersk": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1610392286,
|
||||||
|
"narHash": "sha256-3wFl5y+4YZO4SgRYK8WE7JIS3p0sxbgrGaQ6RMw+d98=",
|
||||||
|
"owner": "nmattia",
|
||||||
|
"repo": "naersk",
|
||||||
|
"rev": "d7bfbad3304fd768c0f93a4c3b50976275e6d4be",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nmattia",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "naersk",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1610942247,
|
||||||
|
"narHash": "sha256-PKo1ATAlC6BmfYSRmX0TVmNoFbrec+A5OKcabGEu2yU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "7d71001b796340b219d1bfa8552c81995017544a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1619244632,
|
||||||
|
"narHash": "sha256-IDcbMRnyKO9WlQ5xzIlM3HfWAUKTy+3xSd+CvDGiLgE=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "5cecebfb2f76da7b93f19967e99b3ff4fb4d2850",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"deploy": "deploy",
|
||||||
|
"devshell": "devshell",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"utils": "utils_2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1610051610,
|
||||||
|
"narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"utils_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1618868421,
|
||||||
|
"narHash": "sha256-vyoJhLV6cJ8/tWz+l9HZLIkb9Rd9esE7p+0RL6zDR6Y=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "eed214942bcfb3a8cc09eb3b28ca7d7221e44a94",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
135
lib/flake.nix
135
lib/flake.nix
|
@ -4,87 +4,84 @@
|
||||||
inputs =
|
inputs =
|
||||||
{
|
{
|
||||||
deploy.url = "github:serokell/deploy-rs";
|
deploy.url = "github:serokell/deploy-rs";
|
||||||
deploy.inputs = {
|
|
||||||
utils.follows = "utils";
|
|
||||||
};
|
|
||||||
devshell.url = "github:numtide/devshell";
|
devshell.url = "github:numtide/devshell";
|
||||||
utils.url = "github:numtide/flake-utils";
|
utils.url = "github:numtide/flake-utils";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs@{ self, nixpkgs, deploy, devshell, utils, ... }: let
|
outputs = inputs@{ self, nixpkgs, deploy, devshell, utils, ... }:
|
||||||
|
|
||||||
lib = nixpkgs.lib.makeExtensible (self:
|
|
||||||
let
|
|
||||||
attrs = import ./attrs.nix { lib = nixpkgs.lib // self; };
|
|
||||||
lists = import ./lists.nix { lib = nixpkgs.lib // self; };
|
|
||||||
strings = import ./strings.nix { lib = nixpkgs.lib // self; };
|
|
||||||
in
|
|
||||||
|
|
||||||
utils.lib
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
{
|
|
||||||
os = import ./devos {
|
|
||||||
lib = nixpkgs.lib // self;
|
|
||||||
inherit utils;
|
|
||||||
};
|
|
||||||
|
|
||||||
mkFlake = {
|
|
||||||
__functor = import ./mkFlake {
|
|
||||||
lib = nixpkgs.lib // self;
|
|
||||||
inherit deploy;
|
|
||||||
};
|
|
||||||
evalArgs = import ./mkFlake/evalArgs.nix { lib = nixpkgs.lib // self; };
|
|
||||||
evalOldArgs = import ./mkFlake/evalOldArgs.nix { lib = nixpkgs.lib // self; };
|
|
||||||
};
|
|
||||||
|
|
||||||
pkgs-lib = import ./pkgs-lib {
|
|
||||||
lib = nixpkgs.lib // self;
|
|
||||||
inherit nixpkgs deploy devshell;
|
|
||||||
};
|
|
||||||
|
|
||||||
inherit (attrs)
|
|
||||||
mapFilterAttrs
|
|
||||||
genAttrs'
|
|
||||||
safeReadDir
|
|
||||||
pathsToImportedAttrs
|
|
||||||
concatAttrs
|
|
||||||
filterPackages;
|
|
||||||
inherit (lists) pathsIn;
|
|
||||||
inherit (strings) rgxToString;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
jobs = import ./jobs { inherit nixpkgs; lib = nixpkgs.lib // lib; };
|
|
||||||
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
inherit jobs;
|
|
||||||
|
|
||||||
lib = utils.lib // {
|
|
||||||
inherit (lib)
|
|
||||||
mkFlake;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
utils.lib.eachDefaultSystem (system:
|
|
||||||
let
|
let
|
||||||
nixpkgs' = import nixpkgs { inherit system; overlays = []; config = {}; };
|
|
||||||
|
lib = nixpkgs.lib.makeExtensible (self:
|
||||||
|
let
|
||||||
|
attrs = import ./attrs.nix { lib = nixpkgs.lib // self; };
|
||||||
|
lists = import ./lists.nix { lib = nixpkgs.lib // self; };
|
||||||
|
strings = import ./strings.nix { lib = nixpkgs.lib // self; };
|
||||||
|
in
|
||||||
|
|
||||||
|
utils.lib
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
{
|
||||||
|
os = import ./devos {
|
||||||
|
lib = nixpkgs.lib // self;
|
||||||
|
inherit utils;
|
||||||
|
};
|
||||||
|
|
||||||
|
mkFlake = {
|
||||||
|
__functor = import ./mkFlake {
|
||||||
|
lib = nixpkgs.lib // self;
|
||||||
|
inherit deploy;
|
||||||
|
};
|
||||||
|
evalArgs = import ./mkFlake/evalArgs.nix { lib = nixpkgs.lib // self; };
|
||||||
|
evalOldArgs = import ./mkFlake/evalOldArgs.nix { lib = nixpkgs.lib // self; };
|
||||||
|
};
|
||||||
|
|
||||||
|
pkgs-lib = import ./pkgs-lib {
|
||||||
|
lib = nixpkgs.lib // self;
|
||||||
|
inherit nixpkgs deploy devshell;
|
||||||
|
};
|
||||||
|
|
||||||
|
inherit (attrs)
|
||||||
|
mapFilterAttrs
|
||||||
|
genAttrs'
|
||||||
|
safeReadDir
|
||||||
|
pathsToImportedAttrs
|
||||||
|
concatAttrs
|
||||||
|
filterPackages;
|
||||||
|
inherit (lists) pathsIn;
|
||||||
|
inherit (strings) rgxToString;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
jobs = import ./jobs { inherit nixpkgs; lib = nixpkgs.lib // lib; };
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
inherit jobs;
|
||||||
|
|
||||||
|
lib = utils.lib // {
|
||||||
|
inherit (lib)
|
||||||
|
mkFlake;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
in
|
||||||
{
|
{
|
||||||
checks = {
|
checks = {
|
||||||
tests = import ./tests {
|
tests = import ./tests {
|
||||||
inherit (nixpkgs') pkgs;
|
inherit pkgs;
|
||||||
lib = nixpkgs.lib // lib;
|
lib = nixpkgs.lib // lib;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
{ nixpkgs, lib, system ? "x86_64-linux" }: let
|
{ nixpkgs, lib, system ? "x86_64-linux" }:
|
||||||
pkgs = import nixpkgs { inherit system; overlays = []; config = {}; };
|
let
|
||||||
in {
|
pkgs = import nixpkgs { inherit system; overlays = [ ]; config = { }; };
|
||||||
|
in
|
||||||
|
{
|
||||||
mkFlakeDoc = import ./mkFlakeDoc.nix { inherit pkgs lib; };
|
mkFlakeDoc = import ./mkFlakeDoc.nix { inherit pkgs lib; };
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,7 @@ let
|
||||||
'';
|
'';
|
||||||
|
|
||||||
options = (
|
options = (
|
||||||
lib.mkFlake.evalArgs
|
lib.mkFlake.evalArgs { nixos = "nixos"; args = { }; }
|
||||||
{ userFlakeSelf = {}; userFlakeNixOS = {}; }
|
|
||||||
{ args = { }; }
|
|
||||||
).options;
|
).options;
|
||||||
|
|
||||||
processedOptions = (pkgs.nixosOptionsDoc { inherit options; }).optionsNix;
|
processedOptions = (pkgs.nixosOptionsDoc { inherit options; }).optionsNix;
|
||||||
|
|
|
@ -6,31 +6,26 @@ in
|
||||||
_: { self, inputs, nixos, ... } @ args:
|
_: { self, inputs, nixos, ... } @ args:
|
||||||
let
|
let
|
||||||
|
|
||||||
userFlakeSelf = self;
|
|
||||||
userFlakeInputs = inputs;
|
|
||||||
userFlakeNixOS = nixos;
|
|
||||||
|
|
||||||
cfg = (
|
cfg = (
|
||||||
lib.mkFlake.evalOldArgs
|
lib.mkFlake.evalOldArgs
|
||||||
{ inherit userFlakeSelf userFlakeInputs; }
|
{ inherit self inputs args; }
|
||||||
{ inherit args; }
|
|
||||||
).config;
|
).config;
|
||||||
|
|
||||||
multiPkgs = os.mkPkgs
|
multiPkgs = os.mkPkgs
|
||||||
{ inherit userFlakeSelf userFlakeInputs userFlakeNixOS; }
|
{
|
||||||
{ inherit (cfg) extern overrides; };
|
inherit self inputs nixos;
|
||||||
|
inherit (cfg) extern overrides;
|
||||||
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
nixosConfigurations = os.mkHosts
|
nixosConfigurations = os.mkHosts
|
||||||
{ inherit userFlakeSelf userFlakeInputs userFlakeNixOS; }
|
|
||||||
{
|
{
|
||||||
inherit multiPkgs;
|
inherit self inputs nixos multiPkgs;
|
||||||
inherit (cfg) extern suites overrides;
|
inherit (cfg) extern suites overrides;
|
||||||
dir = cfg.hosts;
|
dir = cfg.hosts;
|
||||||
};
|
};
|
||||||
|
|
||||||
homeConfigurations = os.mkHomeConfigurations
|
homeConfigurations = os.mkHomeConfigurations self.nixosConfigurations;
|
||||||
{ inherit userFlakeSelf; };
|
|
||||||
|
|
||||||
nixosModules = cfg.modules;
|
nixosModules = cfg.modules;
|
||||||
|
|
||||||
|
@ -39,7 +34,7 @@ let
|
||||||
overlay = cfg.packages;
|
overlay = cfg.packages;
|
||||||
inherit (cfg) overlays;
|
inherit (cfg) overlays;
|
||||||
|
|
||||||
deploy.nodes = os.mkNodes deploy userFlakeSelf.nixosConfigurations;
|
deploy.nodes = os.mkNodes deploy self.nixosConfigurations;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemOutputs = lib.eachDefaultSystem (system:
|
systemOutputs = lib.eachDefaultSystem (system:
|
||||||
|
@ -47,15 +42,16 @@ let
|
||||||
pkgs = multiPkgs.${system};
|
pkgs = multiPkgs.${system};
|
||||||
pkgs-lib = lib.pkgs-lib.${system};
|
pkgs-lib = lib.pkgs-lib.${system};
|
||||||
# all packages that are defined in ./pkgs
|
# all packages that are defined in ./pkgs
|
||||||
legacyPackages = os.mkPackages
|
legacyPackages = os.mkPackages {
|
||||||
{ inherit userFlakeSelf; }
|
inherit pkgs;
|
||||||
{ inherit pkgs; };
|
inherit (self) overlay overlays;
|
||||||
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
checks = pkgs-lib.tests.mkChecks {
|
checks = pkgs-lib.tests.mkChecks {
|
||||||
inherit (userFlakeSelf.deploy) nodes;
|
inherit (self.deploy) nodes;
|
||||||
hosts = userFlakeSelf.nixosConfigurations;
|
hosts = self.nixosConfigurations;
|
||||||
homes = userFlakeSelf.homeConfigurations;
|
homes = self.homeConfigurations;
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit legacyPackages;
|
inherit legacyPackages;
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
|
||||||
{ userFlakeSelf, userFlakeNixOS }:
|
{ nixos, args }:
|
||||||
|
|
||||||
{ args }:
|
|
||||||
let
|
let
|
||||||
argOpts = with lib; { config, ... }:
|
argOpts = with lib; { config, ... }:
|
||||||
let
|
let
|
||||||
|
@ -51,10 +49,10 @@ let
|
||||||
options = with types; {
|
options = with types; {
|
||||||
input = mkOption {
|
input = mkOption {
|
||||||
type = flakeType;
|
type = flakeType;
|
||||||
default = userFlakeNixOS;
|
default = nixos;
|
||||||
description = ''
|
description = ''
|
||||||
nixpkgs flake input to use for this channel
|
nixpkgs flake input to use for this channel
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
overlays = mkOption {
|
overlays = mkOption {
|
||||||
type = pathToListOf overlayType;
|
type = pathToListOf overlayType;
|
||||||
|
@ -198,7 +196,7 @@ let
|
||||||
let
|
let
|
||||||
default = {
|
default = {
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
input = userFlakeNixOS;
|
input = nixos;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{ lib }:
|
{ lib }:
|
||||||
|
|
||||||
{ userFlakeSelf, userFlakeInputs }:
|
{ self, inputs, args }:
|
||||||
|
|
||||||
{ args }:
|
|
||||||
let
|
let
|
||||||
argOpts = with lib; { config, options, ... }:
|
argOpts = with lib; { config, options, ... }:
|
||||||
let
|
let
|
||||||
|
@ -32,8 +30,8 @@ let
|
||||||
};
|
};
|
||||||
hosts = mkOption {
|
hosts = mkOption {
|
||||||
type = path;
|
type = path;
|
||||||
default = "${userFlakeSelf}/hosts";
|
default = "${self}/hosts";
|
||||||
defaultText = "\${userFlakeSelf}/hosts";
|
defaultText = "\${self}/hosts";
|
||||||
apply = toString;
|
apply = toString;
|
||||||
description = ''
|
description = ''
|
||||||
Path to directory containing host configurations that will be exported
|
Path to directory containing host configurations that will be exported
|
||||||
|
@ -74,15 +72,15 @@ let
|
||||||
};
|
};
|
||||||
profiles = mkOption {
|
profiles = mkOption {
|
||||||
type = path;
|
type = path;
|
||||||
default = "${userFlakeSelf}/profiles";
|
default = "${self}/profiles";
|
||||||
defaultText = "\${userFlakeSelf}/profiles";
|
defaultText = "\${self}/profiles";
|
||||||
apply = x: os.mkProfileAttrs (toString x);
|
apply = x: os.mkProfileAttrs (toString x);
|
||||||
description = "path to profiles folder that can be collected into suites";
|
description = "path to profiles folder that can be collected into suites";
|
||||||
};
|
};
|
||||||
userProfiles = mkOption {
|
userProfiles = mkOption {
|
||||||
type = path;
|
type = path;
|
||||||
default = "${userFlakeSelf}/users/profiles";
|
default = "${self}/users/profiles";
|
||||||
defaultText = "\${userFlakeSelf}/users/profiles";
|
defaultText = "\${self}/users/profiles";
|
||||||
apply = x: os.mkProfileAttrs (toString x);
|
apply = x: os.mkProfileAttrs (toString x);
|
||||||
description = "path to user profiles folder that can be collected into userSuites";
|
description = "path to user profiles folder that can be collected into userSuites";
|
||||||
};
|
};
|
||||||
|
@ -107,8 +105,8 @@ let
|
||||||
};
|
};
|
||||||
users = mkOption {
|
users = mkOption {
|
||||||
type = path;
|
type = path;
|
||||||
default = "${userFlakeSelf}/users";
|
default = "${self}/users";
|
||||||
defaultText = "\${userFlakeSelf}/users";
|
defaultText = "\${self}/users";
|
||||||
apply = x: os.mkProfileAttrs (toString x);
|
apply = x: os.mkProfileAttrs (toString x);
|
||||||
description = ''
|
description = ''
|
||||||
path to folder containing profiles that define system users
|
path to folder containing profiles that define system users
|
||||||
|
@ -131,9 +129,9 @@ let
|
||||||
{ modules = []; overlays = []; specialArgs = []; userModules = []; userSpecialArgs = []; }
|
{ modules = []; overlays = []; specialArgs = []; userModules = []; userSpecialArgs = []; }
|
||||||
'';
|
'';
|
||||||
# So unneeded extern attributes can safely be deleted
|
# So unneeded extern attributes can safely be deleted
|
||||||
apply = x: defaults // (x { inputs = userFlakeInputs // userFlakeSelf.inputs; });
|
apply = x: defaults // (x { inputs = inputs // self.inputs; });
|
||||||
description = ''
|
description = ''
|
||||||
Function with argument 'inputs' that contains all devos and ''${userFlakeSelf}'s inputs.
|
Function with argument 'inputs' that contains all devos and ''${self}'s inputs.
|
||||||
The function should return an attribute set with modules, overlays, and
|
The function should return an attribute set with modules, overlays, and
|
||||||
specialArgs to be included across nixos and home manager configurations.
|
specialArgs to be included across nixos and home manager configurations.
|
||||||
Only attributes that are used should be returned.
|
Only attributes that are used should be returned.
|
||||||
|
@ -141,8 +139,8 @@ let
|
||||||
};
|
};
|
||||||
overlays = mkOption {
|
overlays = mkOption {
|
||||||
type = path;
|
type = path;
|
||||||
default = "${userFlakeSelf}/overlays";
|
default = "${self}/overlays";
|
||||||
defaultText = "\${userFlakeSelf}/overlays";
|
defaultText = "\${self}/overlays";
|
||||||
apply = x: lib.pathsToImportedAttrs (lib.pathsIn (toString x));
|
apply = x: lib.pathsToImportedAttrs (lib.pathsIn (toString x));
|
||||||
description = ''
|
description = ''
|
||||||
path to folder containing overlays which will be applied to pkgs and exported in
|
path to folder containing overlays which will be applied to pkgs and exported in
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
{ lib, nixpkgs, deploy, devshell }:
|
{ lib, nixpkgs, deploy, devshell }:
|
||||||
|
|
||||||
lib.genAttrs
|
lib.genAttrs
|
||||||
lib.defaultSystems (system:
|
lib.defaultSystems
|
||||||
|
(system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
in
|
||||||
{
|
{
|
||||||
tests = import ./tests { inherit lib deploy nixpkgs system; };
|
tests = import ./tests { inherit lib deploy nixpkgs pkgs system; };
|
||||||
shell = import ./shell { inherit lib devshell deploy nixpkgs system; };
|
shell = import ./shell { inherit lib devshell deploy nixpkgs system; };
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -11,7 +11,7 @@ let
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
pkgs = import nixpkgs { inherit system overlays; config = {}; };
|
pkgs = import nixpkgs { inherit system overlays; config = { }; };
|
||||||
|
|
||||||
flk = pkgs.callPackage ./flk.nix { };
|
flk = pkgs.callPackage ./flk.nix { };
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
{ lib, nixpkgs, deploy, system }:
|
{ lib, nixpkgs, pkgs, deploy, system }:
|
||||||
let
|
let
|
||||||
pkgs = import nixpkgs { inherit system; overlays = []; config = {}; };
|
|
||||||
|
|
||||||
mkChecks = { hosts, nodes, homes ? { } }:
|
mkChecks = { hosts, nodes, homes ? { } }:
|
||||||
let
|
let
|
||||||
deployHosts = lib.filterAttrs
|
deployHosts = lib.filterAttrs
|
||||||
|
@ -9,9 +7,10 @@ let
|
||||||
nodes;
|
nodes;
|
||||||
deployChecks = deploy.lib.${system}.deployChecks { nodes = deployHosts; };
|
deployChecks = deploy.lib.${system}.deployChecks { nodes = deployHosts; };
|
||||||
tests =
|
tests =
|
||||||
lib.optionalAttrs (deployHosts != { }) {
|
lib.optionalAttrs (deployHosts != { })
|
||||||
profilesTest = profilesTest (hosts.${(builtins.head (builtins.attrNames deployHosts))});
|
{
|
||||||
} // lib.mapAttrs (n: v: v.activationPackage) homes;
|
profilesTest = profilesTest (hosts.${(builtins.head (builtins.attrNames deployHosts))});
|
||||||
|
} // lib.mapAttrs (n: v: v.activationPackage) homes;
|
||||||
|
|
||||||
in
|
in
|
||||||
lib.recursiveUpdate tests deployChecks;
|
lib.recursiveUpdate tests deployChecks;
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
{ pkgs, lib }:
|
{ pkgs, lib }:
|
||||||
|
|
||||||
pkgs.runCommandNoCC "devos-lib-tests"
|
pkgs.runCommandNoCC "devos-lib-tests"
|
||||||
{
|
{
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
pkgs.nix
|
pkgs.nix
|
||||||
(
|
(
|
||||||
let tests = import ./lib.nix { inherit pkgs lib; }; in
|
let tests = import ./lib.nix { inherit pkgs lib; }; in
|
||||||
if tests == [ ] then null
|
if tests == [ ] then null
|
||||||
else throw (builtins.toJSON tests)
|
else throw (builtins.toJSON tests)
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
} ''
|
} ''
|
||||||
datadir="${pkgs.nix}/share"
|
datadir="${pkgs.nix}/share"
|
||||||
export TEST_ROOT=$(pwd)/test-tmp
|
export TEST_ROOT=$(pwd)/test-tmp
|
||||||
export NIX_BUILD_HOOK=
|
export NIX_BUILD_HOOK=
|
||||||
export NIX_CONF_DIR=$TEST_ROOT/etc
|
export NIX_CONF_DIR=$TEST_ROOT/etc
|
||||||
export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
|
export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
|
||||||
export NIX_LOG_DIR=$TEST_ROOT/var/log/nix
|
export NIX_LOG_DIR=$TEST_ROOT/var/log/nix
|
||||||
export NIX_STATE_DIR=$TEST_ROOT/var/nix
|
export NIX_STATE_DIR=$TEST_ROOT/var/nix
|
||||||
export NIX_STORE_DIR=$TEST_ROOT/store
|
export NIX_STORE_DIR=$TEST_ROOT/store
|
||||||
export PAGER=cat
|
export PAGER=cat
|
||||||
cacheDir=$TEST_ROOT/binary-cache
|
cacheDir=$TEST_ROOT/binary-cache
|
||||||
nix-store --init
|
nix-store --init
|
||||||
|
|
||||||
touch $out
|
touch $out
|
||||||
''
|
''
|
||||||
|
|
Loading…
Reference in a new issue