357 lines
10 KiB
Nix
357 lines
10 KiB
Nix
rec {
|
|
description = "Lotte's NixOS installation";
|
|
|
|
# Use NixOS unstable
|
|
inputs = {
|
|
# Sorted by name
|
|
admin-fe = {
|
|
url = "github:DarkKirb/admin-fe";
|
|
inputs.devshell.follows = "devshell";
|
|
inputs.flake-parts.follows = "flake-parts";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
akkoma = {
|
|
url = "github:DarkKirb/akkoma";
|
|
inputs.devshell.follows = "devshell";
|
|
inputs.flake-parts.follows = "flake-parts";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
akkoma-fe = {
|
|
url = "github:DarkKirb/akkoma-fe";
|
|
inputs.devshell.follows = "devshell";
|
|
inputs.flake-parts.follows = "flake-parts";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
attic = {
|
|
url = "github:DarkKirb/attic";
|
|
inputs.cargo2nix.follows = "cargo2nix";
|
|
inputs.crane.follows = "crane";
|
|
inputs.flake-compat.follows = "flake-compat";
|
|
inputs.flake-utils.follows = "flake-utils";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.rust-overlay.follows = "rust-overlay";
|
|
};
|
|
cargo2nix = {
|
|
url = "github:cargo2nix/cargo2nix/main";
|
|
inputs.flake-compat.follows = "flake-compat";
|
|
inputs.flake-utils.follows = "flake-utils";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.rust-overlay.follows = "rust-overlay";
|
|
};
|
|
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";
|
|
};
|
|
devshell = {
|
|
url = "github:numtide/devshell";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
dns = {
|
|
url = "github:DarkKirb/dns.nix";
|
|
inputs.flake-utils.follows = "flake-utils";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
element-web = {
|
|
url = "github:DarkKirb/element-web";
|
|
inputs.flake-parts.follows = "flake-parts";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.matrix-react-sdk.follows = "matrix-react-sdk";
|
|
inputs.matrix-js-sdk.follows = "matrix-js-sdk";
|
|
inputs.devshell.follows = "devshell";
|
|
inputs.flake-compat.follows = "flake-compat";
|
|
};
|
|
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";
|
|
};
|
|
gomod2nix = {
|
|
url = "github:DarkKirb/gomod2nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.utils.follows = "flake-utils";
|
|
};
|
|
home-manager = {
|
|
url = "github:nix-community/home-manager";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
hydra = {
|
|
url = "github:DarkKirb/hydra";
|
|
#inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
impermanence = {
|
|
url = "github:nix-community/impermanence";
|
|
};
|
|
lib-aggregate = {
|
|
url = "github:nix-community/lib-aggregate";
|
|
inputs.flake-utils.follows = "flake-utils";
|
|
inputs.nixpkgs-lib.follows = "nixpkgs";
|
|
};
|
|
matrix-react-sdk = {
|
|
url = "github:DarkKirb/matrix-react-sdk";
|
|
inputs.flake-parts.follows = "flake-parts";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.matrix-js-sdk.follows = "matrix-js-sdk";
|
|
inputs.devshell.follows = "devshell";
|
|
inputs.flake-compat.follows = "flake-compat";
|
|
};
|
|
matrix-js-sdk = {
|
|
url = "github:DarkKirb/matrix-js-sdk";
|
|
inputs.flake-parts.follows = "flake-parts";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.devshell.follows = "devshell";
|
|
inputs.flake-compat.follows = "flake-compat";
|
|
};
|
|
naersk = {
|
|
url = "github:nix-community/naersk/master";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
nix-gaming = {
|
|
url = "github:fufexan/nix-gaming";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.flake-parts.follows = "flake-parts";
|
|
};
|
|
nix-neovim = {
|
|
url = "github:syberant/nix-neovim";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
|
nixos-vscode-server = {
|
|
url = "github:nix-community/nixos-vscode-server";
|
|
inputs.flake-utils.follows = "flake-utils";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
nixpkgs.url = "github:NixOS/nixpkgs";
|
|
rust-overlay = {
|
|
url = "github:oxalica/rust-overlay";
|
|
inputs.flake-utils.follows = "flake-utils";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
sops-nix = {
|
|
url = "github:Mic92/sops-nix";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.nixpkgs-stable.follows = "nixpkgs";
|
|
};
|
|
systems.url = "github:nix-systems/default";
|
|
};
|
|
|
|
outputs = {
|
|
self,
|
|
nixpkgs,
|
|
sops-nix,
|
|
home-manager,
|
|
...
|
|
} @ 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";
|
|
}
|
|
{
|
|
name = "installer"; # Installer iso
|
|
system = "x86_64-linux";
|
|
}
|
|
{
|
|
name = "instance-20221213-1915"; # Oracle server
|
|
system = "aarch64-linux";
|
|
}
|
|
{
|
|
name = "rainbow-resort"; # PC
|
|
system = "x86_64-linux";
|
|
}
|
|
{
|
|
name = "devterm";
|
|
system = "aarch64-linux";
|
|
}
|
|
];
|
|
mkPackages = system: let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
overlays = [
|
|
args.gomod2nix.overlays.default
|
|
self.overlays.${system}
|
|
];
|
|
config.allowUnfree = true;
|
|
};
|
|
common = {
|
|
neovim-base = args.nix-neovim.buildNeovim {
|
|
inherit pkgs;
|
|
configuration = import ./config/programs/vim/configuration.nix false;
|
|
};
|
|
neovim = args.nix-neovim.buildNeovim {
|
|
inherit pkgs;
|
|
configuration = import ./config/programs/vim/configuration.nix true;
|
|
};
|
|
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
|
|
emoji-volpeon-floof
|
|
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
|
|
python-mautrix
|
|
python-tulir-telethon
|
|
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
|
|
old-homepage
|
|
plover-plugin-python-dictionary
|
|
plover-plugin-stenotype-extended
|
|
asar-asm
|
|
bsnes-plus
|
|
sliding-sync
|
|
yiffstash
|
|
plover-plugin-dict-commands
|
|
plover-plugin-last-translation
|
|
plover-plugin-modal-dictionary
|
|
plover-plugin-stitching
|
|
plover-plugin-lapwing-aio
|
|
;
|
|
};
|
|
perSystem = {
|
|
aarch64-linux = {
|
|
inherit (pkgs) linux-devterm;
|
|
};
|
|
};
|
|
in
|
|
common // perSystem.${system} or {};
|
|
in rec {
|
|
nixosConfigurations = builtins.listToAttrs (map
|
|
({
|
|
name,
|
|
system,
|
|
configName ? name,
|
|
}: {
|
|
inherit name;
|
|
value =
|
|
nixpkgs.lib.nixosSystem
|
|
{
|
|
inherit system;
|
|
specialArgs =
|
|
args
|
|
// {
|
|
inherit system;
|
|
};
|
|
modules = [
|
|
(./config + "/${configName}.nix")
|
|
./config/default.nix
|
|
sops-nix.nixosModules.sops
|
|
home-manager.nixosModules.home-manager
|
|
({pkgs, ...}: {
|
|
home-manager.extraSpecialArgs = args // {inherit system;};
|
|
})
|
|
(import utils/link-input.nix args)
|
|
];
|
|
};
|
|
})
|
|
systems);
|
|
overlays = {
|
|
x86_64-linux = import ./overlays args "x86_64-linux";
|
|
aarch64-linux = import ./overlays args "aarch64-linux";
|
|
};
|
|
devShell.x86_64-linux = let
|
|
pkgs = import nixpkgs {
|
|
system = "x86_64-linux";
|
|
overlays = [
|
|
args.gomod2nix.overlays.default
|
|
self.overlays.x86_64-linux
|
|
];
|
|
};
|
|
in
|
|
pkgs.mkShell {
|
|
nativeBuildInputs = with pkgs; [
|
|
age
|
|
sops
|
|
ssh-to-age
|
|
nix-prefetch
|
|
nix-prefetch-git
|
|
jq
|
|
bundix
|
|
python3
|
|
python3Packages.yapf
|
|
github-cli
|
|
statix
|
|
alejandra
|
|
];
|
|
};
|
|
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra;
|
|
packages.x86_64-linux = mkPackages "x86_64-linux";
|
|
packages.aarch64-linux = mkPackages "aarch64-linux";
|
|
hydraJobs =
|
|
(builtins.listToAttrs (map
|
|
({
|
|
name,
|
|
system,
|
|
...
|
|
}: {
|
|
inherit name;
|
|
value = {
|
|
${system} = nixosConfigurations.${name}.config.system.build.toplevel;
|
|
};
|
|
})
|
|
systems))
|
|
// {
|
|
inherit devShell;
|
|
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;
|
|
};
|
|
};
|
|
}
|