nixos-config/flake.nix

379 lines
11 KiB
Nix
Raw Normal View History

2022-01-14 09:19:01 +00:00
rec {
description = "Lotte's NixOS installation";
# Use NixOS unstable
2022-03-05 20:39:49 +00:00
inputs = {
2022-12-13 09:00:47 +00:00
# Sorted by name
2023-11-22 09:17:21 +00:00
admin-fe = {
url = "github:DarkKirb/admin-fe";
inputs.devshell.follows = "devshell";
2024-09-10 07:39:16 +00:00
inputs.flake-compat.follows = "flake-compat";
2023-11-22 09:17:21 +00:00
inputs.flake-parts.follows = "flake-parts";
2024-09-10 09:09:58 +00:00
#inputs.nixpkgs.follows = "nixpkgs";
2023-11-22 09:17:21 +00:00
};
akkoma = {
url = "github:DarkKirb/akkoma";
inputs.devshell.follows = "devshell";
2024-09-10 07:39:16 +00:00
inputs.flake-compat.follows = "flake-compat";
2023-11-22 09:17:21 +00:00
inputs.flake-parts.follows = "flake-parts";
inputs.nixpkgs.follows = "nixpkgs";
};
akkoma-fe = {
url = "github:DarkKirb/akkoma-fe";
inputs.devshell.follows = "devshell";
2024-09-10 07:39:16 +00:00
inputs.flake-compat.follows = "flake-compat";
2023-11-22 09:17:21 +00:00
inputs.flake-parts.follows = "flake-parts";
2024-10-20 05:06:44 +00:00
#inputs.nixpkgs.follows = "nixpkgs";
2023-11-22 09:17:21 +00:00
};
attic = {
url = "github:DarkKirb/attic";
inputs.crane.follows = "crane";
inputs.flake-compat.follows = "flake-compat";
inputs.nixpkgs.follows = "nixpkgs";
};
cargo2nix = {
2024-09-09 13:03:16 +00:00
url = "github:DarkKirb/cargo2nix/master";
inputs.flake-compat.follows = "flake-compat";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
2024-06-17 19:50:28 +00:00
inputs.rust-overlay.follows = "rust-overlay";
};
2024-10-04 08:14:05 +00:00
chir-rs = {
2024-10-17 11:57:36 +00:00
url = "git+https://git.chir.rs/chir.rs/chir.rs";
2024-10-04 08:14:05 +00:00
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
inputs.flake-parts.follows = "flake-parts";
};
2024-03-31 08:50:50 +00:00
colorpickle = {
url = "github:AgathaSorceress/colorpickle";
inputs.naersk.follows = "naersk";
inputs.nixpkgs.follows = "nixpkgs";
inputs.utils.follows = "flake-utils";
};
crane = {
url = "github:DarkKirb/crane";
inputs.flake-compat.follows = "flake-compat";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-overlay.follows = "rust-overlay";
};
2023-12-12 18:08:40 +00:00
devshell = {
2023-11-18 07:12:28 +00:00
url = "github:numtide/devshell";
inputs.nixpkgs.follows = "nixpkgs";
};
2022-12-13 09:00:47 +00:00
dns = {
url = "github:DarkKirb/dns.nix";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-10-10 08:14:59 +00:00
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
flake-parts = {
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "systems";
};
2024-09-10 07:39:16 +00:00
flakey-profile = {
url = "github:lf-/flakey-profile";
};
gitignore = {
url = "github:hercules-ci/gitignore.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
gomod2nix = {
url = "github:DarkKirb/gomod2nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.utils.follows = "flake-utils";
};
2022-12-13 09:00:47 +00:00
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-12-09 10:02:48 +00:00
hydra = {
2024-09-10 07:39:16 +00:00
url = "git+https://git.lix.systems/lix-project/hydra";
2024-09-17 13:12:32 +00:00
#inputs.lix.follows = "lix";
#inputs.nix-eval-jobs.follows = "nix-eval-jobs";
#inputs.nixpkgs.follows = "nixpkgs";
2023-12-09 10:02:48 +00:00
};
2024-04-13 11:31:08 +00:00
impermanence = {
url = "github:nix-community/impermanence";
};
2023-10-10 08:14:59 +00:00
lib-aggregate = {
url = "github:nix-community/lib-aggregate";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
2024-09-10 07:39:16 +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-03-31 08:50:50 +00:00
naersk = {
url = "github:nix-community/naersk/master";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-10-30 06:10:57 +00:00
nix-gaming = {
url = "github:fufexan/nix-gaming";
2024-04-06 17:58:02 +00:00
inputs.nixpkgs.follows = "nixpkgs";
2023-10-30 06:10:57 +00:00
inputs.flake-parts.follows = "flake-parts";
2024-09-10 07:39:16 +00:00
};
nix2container = {
url = "github:nlewo/nix2container";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
2023-10-30 06:10:57 +00:00
};
2022-06-12 15:42:42 +00:00
nixos-hardware.url = "github:NixOS/nixos-hardware";
2023-12-07 18:16:47 +00:00
nixos-vscode-server = {
url = "github:nix-community/nixos-vscode-server";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
2023-11-15 06:14:06 +00:00
nixpkgs.url = "github:NixOS/nixpkgs";
2024-09-10 07:39:16 +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-07-05 12:59:06 +00:00
riscv-overlay = {
url = "github:DarkKirb/riscv-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
2022-12-13 09:00:47 +00:00
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs";
};
2023-10-10 08:14:59 +00:00
systems.url = "github:nix-systems/default";
2022-03-05 20:39:49 +00:00
};
2022-01-14 09:19:01 +00:00
2022-06-12 15:39:15 +00:00
outputs = {
self,
nixpkgs,
sops-nix,
home-manager,
2024-09-10 07:39:16 +00:00
lix-module,
2022-06-12 15:39:15 +00:00
...
} @ args: let
systems = [
{
name = "nixos-8gb-fsn1-1"; # Hetzner Server
system = "x86_64-linux";
}
{
name = "thinkrac"; # Thinkpad T470
system = "x86_64-linux";
}
{
name = "nas"; # My nas
system = "x86_64-linux";
}
2023-03-18 09:11:05 +00:00
{
name = "installer"; # Installer iso
system = "x86_64-linux";
}
{
name = "instance-20221213-1915"; # Oracle server
system = "aarch64-linux";
}
2023-12-06 13:00:26 +00:00
{
name = "rainbow-resort"; # PC
system = "x86_64-linux";
}
2024-07-01 15:51:11 +00:00
{
name = "vf2"; # vision five 2
2024-07-03 13:30:10 +00:00
system = "riscv64-linux";
2024-07-01 15:51:11 +00:00
}
2024-10-14 12:11:53 +00:00
/*
{
2024-06-17 19:23:30 +00:00
name = "devterm";
system = "aarch64-linux";
}
2024-10-14 12:11:53 +00:00
*/
2022-06-12 15:39:15 +00:00
];
mkPackages = system: let
pkgs = import nixpkgs {
inherit system;
overlays = [
args.gomod2nix.overlays.default
self.overlays.${system}
2024-09-10 09:04:36 +00:00
args.hydra.overlays.default
];
config.allowUnfree = true;
2024-08-31 05:59:35 +00:00
config.permittedInsecurePackages = [
"olm-3.2.16"
];
};
2024-06-17 19:11:14 +00:00
common = {
inherit
(pkgs)
emoji-lotte
emoji-volpeon-blobfox
emoji-volpeon-blobfox-flip
emoji-volpeon-bunhd
emoji-volpeon-bunhd-flip
emoji-volpeon-drgn
emoji-volpeon-fox
emoji-volpeon-gphn
emoji-volpeon-raccoon
emoji-volpeon-vlpn
emoji-volpeon-neofox
emoji-volpeon-neocat
2024-07-06 04:53:50 +00:00
emoji-volpeon-floof
2024-07-09 12:59:58 +00:00
emoji-rosaflags
emoji-raccoon
emoji-caro
lotte-art
alco-sans
constructium
fairfax
fairfax-hd
kreative-square
nasin-nanpa
matrix-media-repo
mautrix-discord
mautrix-whatsapp
mautrix-telegram
2024-09-23 18:04:58 +00:00
mautrix-slack
2024-07-09 12:59:58 +00:00
python-mautrix
python-tulir-telethon
2024-06-17 19:11:14 +00:00
papermc
python-plover-stroke
python-rtf-tokenize
plover
plover-plugins-manager
python-simplefuzzyset
plover-plugin-emoji
plover-plugin-tapey-tape
plover-plugin-yaml-dictionary
plover-plugin-machine-hid
plover-plugin-rkb1-hid
plover-plugin-dotool-output
plover-dict-didoesdigital
miifox-net
plover-plugin-python-dictionary
plover-plugin-stenotype-extended
asar-asm
bsnes-plus
yiffstash
plover-plugin-dict-commands
plover-plugin-last-translation
plover-plugin-modal-dictionary
plover-plugin-stitching
plover-plugin-lapwing-aio
2024-10-20 05:22:22 +00:00
mgba-dev
2024-06-17 19:11:14 +00:00
;
};
2024-06-17 19:11:14 +00:00
perSystem = {
aarch64-linux = {
2024-10-14 12:29:10 +00:00
#inherit (pkgs) linux-devterm;
2024-06-17 19:11:14 +00:00
};
};
2024-06-17 19:11:14 +00:00
in
common // perSystem.${system} or {};
2022-06-12 15:39:15 +00:00
in rec {
nixosConfigurations = builtins.listToAttrs (map
({
name,
system,
configName ? name,
2022-06-12 15:39:15 +00:00
}: {
inherit name;
value =
nixpkgs.lib.nixosSystem
{
inherit system;
specialArgs =
args
// {
2022-02-08 21:01:33 +00:00
inherit system;
2022-06-12 15:39:15 +00:00
};
modules = [
(./config + "/${configName}.nix")
2022-06-12 15:39:15 +00:00
./config/default.nix
sops-nix.nixosModules.sops
home-manager.nixosModules.home-manager
({pkgs, ...}: {
2022-07-06 18:25:34 +00:00
home-manager.extraSpecialArgs = args // {inherit system;};
2022-06-12 15:39:15 +00:00
})
(import utils/link-input.nix args)
2024-09-10 07:39:16 +00:00
lix-module.nixosModules.default
2022-06-12 15:39:15 +00:00
];
};
})
systems);
2022-12-18 12:15:23 +00:00
overlays = {
x86_64-linux = import ./overlays args "x86_64-linux";
aarch64-linux = import ./overlays args "aarch64-linux";
2024-07-02 12:58:34 +00:00
riscv64-linux = import ./overlays args "riscv64-linux";
2022-12-18 12:15:23 +00:00
};
2022-06-12 15:39:15 +00:00
devShell.x86_64-linux = let
2022-12-18 12:15:23 +00:00
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [
args.gomod2nix.overlays.default
self.overlays.x86_64-linux
];
2022-12-18 12:15:23 +00:00
};
2022-06-12 15:39:15 +00:00
in
pkgs.mkShell {
nativeBuildInputs = with pkgs; [
2024-03-19 09:07:25 +00:00
age
2022-06-12 15:39:15 +00:00
sops
ssh-to-age
nix-prefetch
nix-prefetch-git
jq
bundix
python3
python3Packages.yapf
github-cli
2022-06-12 15:42:42 +00:00
statix
2023-12-09 09:27:20 +00:00
alejandra
2022-06-12 15:39:15 +00:00
];
};
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra;
packages.x86_64-linux = mkPackages "x86_64-linux";
packages.aarch64-linux = mkPackages "aarch64-linux";
2022-06-12 15:39:15 +00:00
hydraJobs =
(builtins.listToAttrs (map
({
name,
system,
...
2022-06-12 15:39:15 +00:00
}: {
inherit name;
value = {
${system} = nixosConfigurations.${name}.config.system.build.toplevel;
};
2022-01-14 09:19:01 +00:00
})
2022-06-12 15:39:15 +00:00
systems))
// {
2022-06-12 15:42:42 +00:00
inherit devShell;
2024-01-22 10:58:14 +00:00
inherit packages;
# Uncomment the line to build an installer image
# This is EXTREMELY LARGE and will make builds take forever
# installer.x86_64-linux = nixosConfigurations.installer.config.system.build.isoImage;
2022-04-16 11:02:32 +00:00
};
2022-06-12 15:39:15 +00:00
};
2022-01-14 09:19:01 +00:00
}