nixos-config/flake.nix

286 lines
7.7 KiB
Nix
Raw Normal View History

2024-10-28 09:51:44 +00:00
{
description = "Lottes nix configuration";
2022-01-14 09:19:01 +00:00
2022-03-05 20:39:49 +00:00
inputs = {
2024-10-29 12:29:05 +00:00
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-10-28 09:56:58 +00:00
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
2024-10-29 06:09:45 +00:00
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "systems";
};
flakey-profile = {
url = "github:lf-/flakey-profile";
};
gitignore = {
url = "github:hercules-ci/gitignore.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-11-02 07:43:37 +00:00
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-10-29 08:21:03 +00:00
impermanence = {
url = "github:nix-community/impermanence";
};
2024-10-29 06:09:45 +00:00
lix = {
url = "git+https://git.lix.systems/lix-project/lix";
inputs.flake-compat.follows = "flake-compat";
inputs.nix2container.follows = "nix2container";
inputs.nixpkgs.follows = "nixpkgs";
inputs.pre-commit-hooks.follows = "pre-commit-hooks";
};
lix-module = {
url = "git+https://git.lix.systems/lix-project/nixos-module";
inputs.flake-utils.follows = "flake-utils";
inputs.flakey-profile.follows = "flakey-profile";
inputs.lix.follows = "lix";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-11-13 14:46:14 +00:00
nix-vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions";
inputs.flake-compat.follows = "flake-compat";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-10-29 06:09:45 +00:00
nix2container = {
url = "github:nlewo/nix2container";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-10-29 12:29:05 +00:00
nixos-hardware.url = "github:NixOS/nixos-hardware";
2024-10-28 09:51:44 +00:00
nixpkgs.url = "github:nixos/nixpkgs";
2024-11-06 10:38:51 +00:00
nur.url = "github:nix-community/NUR";
2024-11-05 18:49:05 +00:00
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-10-29 06:09:45 +00:00
pre-commit-hooks = {
url = "github:cachix/git-hooks.nix";
inputs.flake-compat.follows = "flake-compat";
inputs.gitignore.follows = "gitignore";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs";
};
2024-10-28 13:58:23 +00:00
riscv-overlay = {
url = "github:DarkKirb/riscv-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-11-13 13:38:40 +00:00
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-10-29 09:06:17 +00:00
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs";
};
2024-10-29 06:09:45 +00:00
systems.url = "github:nix-systems/default";
2024-11-09 12:05:06 +00:00
vscode-server = {
url = "github:nix-community/nixos-vscode-server";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
2022-03-05 20:39:49 +00:00
};
2022-01-14 09:19:01 +00:00
2024-11-09 14:02:26 +00:00
outputs =
{
self,
nixpkgs,
...
}@inputs':
let
inputs = inputs' // {
2024-10-28 09:51:44 +00:00
nixos-config = self;
inherit inputs;
2024-10-29 06:09:45 +00:00
inTester = false;
2024-10-30 08:06:52 +00:00
pureInputs = inputs';
2024-10-28 09:51:44 +00:00
};
2024-11-09 14:02:26 +00:00
pkgsFor =
system:
let
inputs' = inputs // {
inherit system;
inputs = inputs';
};
in
import nixpkgs {
2024-10-28 13:58:23 +00:00
inherit system;
2024-11-10 21:20:25 +00:00
config.allowUnfree = true;
2024-11-09 14:02:26 +00:00
overlays =
[
(
_: _:
inputs'
// {
inputs = inputs';
}
)
2024-11-10 21:20:25 +00:00
self.overlays.default
2024-10-28 13:58:23 +00:00
]
2024-11-09 14:02:26 +00:00
++ (
if system == "riscv64-linux" then
[
inputs.riscv-overlay.overlays.default
]
else
[ ]
);
2024-11-07 09:01:53 +00:00
};
2024-11-09 14:02:26 +00:00
in
{
checks.x86_64-linux = nixpkgs.lib.listToAttrs (
map (testName: {
name = testName;
value = (pkgsFor "x86_64-linux").callPackage ./tests/${testName}.nix { };
}) [ "containers-default" ]
);
nixosModules = {
containers = import ./modules/containers/default.nix;
default = import ./modules/default.nix;
2024-10-29 12:29:05 +00:00
};
2024-11-09 14:02:26 +00:00
nixosContainers =
with nixpkgs.lib;
let
containerNames = [
"default"
2024-11-15 12:41:19 +00:00
"postgresql"
2024-10-28 09:51:44 +00:00
];
2024-11-09 14:02:26 +00:00
containerArches = [
"x86_64-linux"
"aarch64-linux"
"riscv64-linux"
2024-10-29 12:29:05 +00:00
];
2024-11-09 14:02:26 +00:00
containers = listToAttrs (
flatten (
map (
system:
let
pkgs = pkgsFor system;
in
map (container: {
name = "container-${container}-${system}";
value = pkgs.callPackage ./containers/${container}-configuration.nix { };
}) containerNames
) containerArches
)
);
in
containers;
nixosConfigurations =
with nixpkgs.lib;
let
mkSystem =
args:
let
inputs' = inputs // {
inherit (args) system;
};
in
nixosSystem (
args
// {
specialArgs = args.specialArgs or { } // inputs';
}
);
systems' = {
not522 = {
config = ./machine/not522;
system = "riscv64-linux";
};
not522-installer = {
config = ./machine/not522/installer;
system = "riscv64-linux";
};
pc-installer = {
config = ./machine/pc-installer;
system = "x86_64-linux";
};
rainbow-resort = {
config = ./machine/rainbow-resort;
system = "x86_64-linux";
};
thinkrac = {
config = ./machine/thinkrac;
system = "x86_64-linux";
};
};
containers = mapAttrs (
_: container:
mkSystem {
inherit (container) system;
modules = [
container.config
];
}
) self.nixosContainers;
systems = mapAttrs (
_: system:
mkSystem {
inherit (system) system;
modules = [
system.config
];
}
) systems';
in
containers // systems;
hydraJobs = {
2024-11-10 21:20:25 +00:00
inherit (self) checks devShells packages;
2024-11-09 14:02:26 +00:00
nixosConfigurations = nixpkgs.lib.mapAttrs (
_: v: v.config.system.build.toplevel
) self.nixosConfigurations;
2024-10-29 09:06:17 +00:00
};
2024-11-09 14:02:26 +00:00
devShells.x86_64-linux.default =
with pkgsFor "x86_64-linux";
mkShell {
nativeBuildInputs = with pkgs; [
age
sops
ssh-to-age
nixfmt-rfc-style
2024-11-10 21:20:25 +00:00
nix-prefetch
nix-prefetch-git
2024-11-09 14:02:26 +00:00
];
};
formatter.x86_64-linux = (pkgsFor "x86_64-linux").nixfmt-rfc-style;
2024-11-10 21:20:25 +00:00
overlays.default = import ./packages;
packages = nixpkgs.lib.listToAttrs (
map
(name: {
inherit name;
value =
let
pkgs = pkgsFor name;
in
{
inherit (pkgs)
art-lotte
art-lotte-bgs-nsfw
art-lotte-bgs-sfw
package-updater
;
2024-11-12 16:25:17 +00:00
}
// (
if name != "riscv64-linux" then
{
inherit (pkgs) kodi-joyn;
}
else
{ }
);
2024-11-10 21:20:25 +00:00
})
[
"x86_64-linux"
"riscv64-linux"
"aarch64-linux"
]
);
2024-11-09 14:02:26 +00:00
};
2022-01-14 09:19:01 +00:00
}