2021-05-19 23:08:18 +02:00
|
|
|
{
|
|
|
|
description = "Malte Tammena's system configuration";
|
|
|
|
|
2021-10-13 17:38:24 +02:00
|
|
|
inputs = {
|
|
|
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
2022-03-23 13:10:18 +01:00
|
|
|
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
|
|
|
utils.url = "github:gytis-ivaskevicius/flake-utils-plus";
|
|
|
|
custom-udev-rules.url = "github:MalteT/custom-udev-rules";
|
2022-06-05 14:16:32 +02:00
|
|
|
nix-colors.url = "github:Misterio77/nix-colors";
|
2022-03-23 13:10:18 +01:00
|
|
|
|
2022-03-24 08:55:34 +01:00
|
|
|
nickel = {
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2021-12-26 21:49:18 +01:00
|
|
|
nixpkgs-wayland = {
|
|
|
|
url = "github:nix-community/nixpkgs-wayland";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
emulator-2a = {
|
|
|
|
url = "github:MalteT/2a-emulator/develop";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
mensa = {
|
2022-03-30 21:52:15 +02:00
|
|
|
url = "github:MalteT/mensa/develop";
|
2021-12-26 21:49:18 +01:00
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
fenix = {
|
|
|
|
url = "github:nix-community/fenix";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
colmena = {
|
|
|
|
url = "github:zhaofengli/colmena";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
sops-nix = {
|
|
|
|
url = "github:Mic92/sops-nix";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
glados = {
|
|
|
|
url = "git+https://git.sr.ht/~megamanmalte/GLaDOS?ref=main";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
home-manager = {
|
|
|
|
url = "github:nix-community/home-manager";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2022-03-23 13:10:18 +01:00
|
|
|
fend = {
|
|
|
|
url = "github:MalteT/fend/flake";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2022-03-25 18:46:53 +01:00
|
|
|
hydra = {
|
|
|
|
url = "github:NixOS/hydra";
|
|
|
|
inputs.nixpkgs.follows = "nixForHydra/nixpkgs";
|
|
|
|
inputs.nix.follows = "nixForHydra";
|
|
|
|
};
|
|
|
|
nixForHydra = {
|
2022-09-26 17:34:01 +02:00
|
|
|
url = "github:NixOS/nix/11e45768b34fdafdcf019ddbd337afa16127ff0f";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgsForNixForHydra";
|
|
|
|
};
|
|
|
|
nixpkgsForNixForHydra = {
|
|
|
|
url = "github:NixOS/nixpkgs/365e1b3a859281cf11b94f87231adeabbdd878a2";
|
2022-03-25 18:46:53 +01:00
|
|
|
};
|
2022-03-23 13:10:18 +01:00
|
|
|
|
2021-10-13 17:38:24 +02:00
|
|
|
rip = {
|
|
|
|
url = "github:nivekuil/rip";
|
|
|
|
flake = false;
|
|
|
|
};
|
|
|
|
"2i-emulator" = {
|
|
|
|
url = "github:klemens/2i-emulator";
|
|
|
|
flake = false;
|
|
|
|
};
|
|
|
|
"cataclysm-dda" = {
|
|
|
|
url = "github:CleverRaven/Cataclysm-DDA";
|
|
|
|
flake = false;
|
|
|
|
};
|
2022-02-19 16:01:47 +01:00
|
|
|
radicale_infcloud = {
|
|
|
|
url = "github:Unrud/RadicaleInfCloud";
|
|
|
|
flake = false;
|
|
|
|
};
|
2022-03-06 14:42:26 +01:00
|
|
|
qmk-udev-rules = {
|
|
|
|
url = "github:qmk/qmk_firmware";
|
|
|
|
flake = false;
|
|
|
|
};
|
2022-12-01 15:33:12 +01:00
|
|
|
jovian-nixos = {
|
|
|
|
url = "github:Jovian-Experiments/Jovian-NixOS";
|
|
|
|
flake = false;
|
|
|
|
};
|
2021-07-21 09:10:17 +02:00
|
|
|
};
|
2021-05-19 23:08:18 +02:00
|
|
|
|
2022-05-08 21:42:05 +02:00
|
|
|
nixConfig = {
|
2022-06-18 15:02:00 +02:00
|
|
|
extra-substituters = ["http://cache.home"];
|
2022-05-08 21:42:05 +02:00
|
|
|
};
|
|
|
|
|
2022-03-23 13:10:18 +01:00
|
|
|
outputs = {
|
|
|
|
self,
|
|
|
|
utils,
|
|
|
|
nixpkgs,
|
|
|
|
nixos-hardware,
|
|
|
|
...
|
|
|
|
} @ inputs: let
|
|
|
|
pkgs = self.pkgs.x86_64-linux.nixpkgs;
|
|
|
|
|
|
|
|
hosts = [
|
|
|
|
"helix-texta"
|
|
|
|
"murex-pecten"
|
|
|
|
"cornu-aspersum"
|
|
|
|
"trochulus-hispidus"
|
2022-05-27 16:31:31 +02:00
|
|
|
"radix-balthica"
|
2022-05-27 18:11:47 +02:00
|
|
|
"faunus-ater"
|
2022-12-01 15:33:12 +01:00
|
|
|
"polymita-picta"
|
2022-03-23 13:10:18 +01:00
|
|
|
];
|
|
|
|
|
|
|
|
defaultModules = [
|
|
|
|
inputs.home-manager.nixosModules.home-manager
|
|
|
|
self.nixosModules.home-manager-config
|
|
|
|
inputs.custom-udev-rules.nixosModule
|
|
|
|
inputs.sops-nix.nixosModules.sops
|
|
|
|
self.nixosModules.nixUnstable
|
|
|
|
./modules/base-system.nix
|
2022-06-05 14:16:32 +02:00
|
|
|
{config._module.args.flake = self;}
|
2022-03-23 13:10:18 +01:00
|
|
|
];
|
|
|
|
in
|
|
|
|
utils.lib.mkFlake {
|
|
|
|
inherit self inputs;
|
|
|
|
|
|
|
|
supportedSystems = ["x86_64-linux"];
|
2022-03-30 12:11:34 +02:00
|
|
|
nix.generateRegistryFromInputs = true;
|
|
|
|
nix.linkInputs = true;
|
2022-03-23 13:10:18 +01:00
|
|
|
|
|
|
|
sharedOverlays = [
|
2022-12-08 12:07:35 +01:00
|
|
|
inputs.fenix.overlays.default
|
2022-03-23 13:10:18 +01:00
|
|
|
inputs.colmena.overlay
|
|
|
|
utils.overlay
|
|
|
|
(self: super: {
|
2022-04-08 23:55:37 +02:00
|
|
|
# Add fonts
|
|
|
|
hackNerdLigatures = super.callPackage ./pkgs/hack.nix {};
|
2022-03-23 13:10:18 +01:00
|
|
|
# Add the emulator
|
|
|
|
"2a-emulator" =
|
|
|
|
inputs.emulator-2a.packages.x86_64-linux."2a-emulator";
|
|
|
|
# Add my mensa tool
|
2022-05-30 18:35:52 +02:00
|
|
|
inherit (inputs.mensa.packages.x86_64-linux) mensa;
|
2022-05-07 16:44:48 +02:00
|
|
|
darkman = super.callPackage ./pkgs/darkman.nix {};
|
2022-03-23 13:10:18 +01:00
|
|
|
# TODO: Replace with upstream
|
2022-05-30 18:35:52 +02:00
|
|
|
inherit (inputs.fend.packages.x86_64-linux) fend;
|
2022-08-15 09:47:37 +02:00
|
|
|
nickel = inputs.nickel.packages.x86_64-linux.default;
|
2022-09-23 12:23:03 +02:00
|
|
|
hydra = inputs.hydra.packages.x86_64-linux.default;
|
2022-03-30 12:10:34 +02:00
|
|
|
# TODO: Remove once hydra fixes these removed aliases
|
2022-05-30 18:35:52 +02:00
|
|
|
inherit (super.perlPackages) buildPerlPackage;
|
2022-03-25 18:46:53 +01:00
|
|
|
netcat-openbsd = super.libressl.nc;
|
2022-03-23 13:10:18 +01:00
|
|
|
})
|
|
|
|
# Override cataclysm to use git
|
|
|
|
(import ./overlays/cataclysm-dda.nix)
|
|
|
|
(import ./overlays/qmk-udev-rules.nix)
|
|
|
|
(import ./overlays/sane-backends.nix)
|
|
|
|
(import ./overlays/logisim.nix)
|
2022-05-05 09:40:20 +02:00
|
|
|
(import ./overlays/fzf-kak.nix)
|
2022-06-06 17:28:41 +02:00
|
|
|
(import ./overlays/prometheus-fritzbox-exporter.nix)
|
2022-03-23 13:10:18 +01:00
|
|
|
];
|
2021-12-04 15:07:07 +01:00
|
|
|
|
2022-03-23 13:10:18 +01:00
|
|
|
hostDefaults.system = "x86_64-linux";
|
|
|
|
hostDefaults.modules = defaultModules;
|
2022-01-06 10:22:46 +01:00
|
|
|
|
2022-03-23 13:10:18 +01:00
|
|
|
hosts = builtins.listToAttrs (map (host: {
|
|
|
|
name = host;
|
|
|
|
value = {modules = [self.nixosModules.${host}];};
|
|
|
|
})
|
|
|
|
hosts);
|
2021-12-18 12:41:35 +01:00
|
|
|
|
2022-03-23 13:10:18 +01:00
|
|
|
nixosModules = {
|
2022-05-30 18:35:52 +02:00
|
|
|
home-manager-config = _: {
|
2022-03-23 13:10:18 +01:00
|
|
|
home-manager.verbose = true;
|
|
|
|
home-manager.useGlobalPkgs = true;
|
|
|
|
home-manager.useUserPackages = true;
|
2022-06-05 14:16:32 +02:00
|
|
|
home-manager.extraSpecialArgs = {inherit (inputs) nix-colors;};
|
2021-12-04 15:07:07 +01:00
|
|
|
};
|
2021-12-26 23:01:52 +01:00
|
|
|
|
2022-03-23 13:10:18 +01:00
|
|
|
nixUnstable = {pkgs, ...}: {
|
|
|
|
nix.registry.nixpkgs.flake = nixpkgs;
|
|
|
|
nix.package = pkgs.nixUnstable;
|
|
|
|
nix.extraOptions = ''
|
|
|
|
experimental-features = nix-command flakes
|
|
|
|
'';
|
2021-12-26 23:01:52 +01:00
|
|
|
};
|
2021-12-04 15:07:07 +01:00
|
|
|
|
2022-03-23 13:10:18 +01:00
|
|
|
helix-texta = {
|
|
|
|
pkgs,
|
|
|
|
config,
|
|
|
|
...
|
|
|
|
}: {
|
|
|
|
imports = [
|
|
|
|
./hosts/helix-texta.nix
|
|
|
|
./modules/light-actkbd.nix
|
|
|
|
self.nixosModules.thinkpad-p1-gen3
|
|
|
|
];
|
|
|
|
};
|
|
|
|
murex-pecten = {...}: {
|
|
|
|
imports = [
|
|
|
|
nixos-hardware.nixosModules.common-pc
|
|
|
|
nixos-hardware.nixosModules.common-pc-ssd
|
|
|
|
nixos-hardware.nixosModules.common-cpu-amd
|
|
|
|
nixos-hardware.nixosModules.common-gpu-amd
|
|
|
|
./hosts/murex-pecten.nix
|
|
|
|
./hardware/aorus.nix
|
2021-12-04 15:07:07 +01:00
|
|
|
];
|
|
|
|
};
|
2022-03-23 13:10:18 +01:00
|
|
|
cornu-aspersum = {...}: {
|
|
|
|
imports = [
|
|
|
|
./hosts/cornu-aspersum.nix
|
|
|
|
./hardware/netcup-rs-2000-g9.nix
|
|
|
|
./modules/nginx-reverse-proxy.nix
|
|
|
|
./modules/ccqcraft.nix
|
|
|
|
inputs.glados.nixosModules.glados
|
|
|
|
];
|
2021-11-29 16:36:57 +01:00
|
|
|
};
|
2022-03-23 13:10:18 +01:00
|
|
|
trochulus-hispidus = {pkgs, ...}: {
|
|
|
|
imports = [
|
|
|
|
./hosts/trochulus-hispidus.nix
|
|
|
|
./hardware/latitude-e7440.nix
|
2022-03-29 12:13:07 +02:00
|
|
|
nixos-hardware.nixosModules.common-cpu-intel
|
|
|
|
nixos-hardware.nixosModules.common-pc-laptop
|
|
|
|
nixos-hardware.nixosModules.common-pc-laptop-ssd
|
2022-03-23 13:10:18 +01:00
|
|
|
];
|
|
|
|
};
|
|
|
|
thinkpad-p1-gen3 = {...}: {
|
|
|
|
imports = [
|
|
|
|
nixos-hardware.nixosModules.common-cpu-intel
|
|
|
|
nixos-hardware.nixosModules.common-gpu-nvidia
|
|
|
|
nixos-hardware.nixosModules.common-pc-laptop
|
|
|
|
nixos-hardware.nixosModules.common-pc-laptop-ssd
|
|
|
|
nixos-hardware.nixosModules.common-pc-laptop-acpi_call
|
|
|
|
./hardware/thinkpad-p1-gen3.nix
|
|
|
|
];
|
2022-03-08 09:56:58 +01:00
|
|
|
};
|
2022-05-27 16:31:31 +02:00
|
|
|
radix-balthica = {...}: {
|
2022-05-13 18:14:08 +02:00
|
|
|
imports = [
|
2022-05-27 16:31:31 +02:00
|
|
|
./hosts/radix-balthica.nix
|
2022-05-13 18:14:08 +02:00
|
|
|
];
|
|
|
|
};
|
2022-05-27 18:11:47 +02:00
|
|
|
faunus-ater = {...}: {
|
|
|
|
imports = [
|
2022-06-01 19:18:08 +02:00
|
|
|
nixos-hardware.nixosModules.common-cpu-intel #-cpu-only
|
|
|
|
./modules/nginx-reverse-proxy.nix
|
2022-05-27 18:11:47 +02:00
|
|
|
./hosts/faunus-ater.nix
|
|
|
|
./hardware/asrock-z370-i3-black-box.nix
|
|
|
|
];
|
|
|
|
};
|
2022-12-01 15:33:12 +01:00
|
|
|
polymita-picta = {...}: {
|
|
|
|
imports = [
|
2022-12-01 16:04:39 +01:00
|
|
|
./hosts/polymita-picta.nix
|
2022-12-01 15:33:12 +01:00
|
|
|
./hardware/steam-deck.nix
|
|
|
|
(inputs.jovian-nixos + "/modules")
|
|
|
|
];
|
|
|
|
};
|
2021-12-26 20:44:36 +01:00
|
|
|
};
|
2021-07-07 18:49:12 +02:00
|
|
|
|
2022-03-23 13:10:18 +01:00
|
|
|
colmena =
|
|
|
|
{
|
|
|
|
meta = {nixpkgs = pkgs;};
|
|
|
|
defaults = {...}: {imports = defaultModules;};
|
|
|
|
}
|
|
|
|
// (builtins.listToAttrs (map (
|
|
|
|
host: {
|
|
|
|
name = host;
|
|
|
|
value = {
|
|
|
|
imports = [self.nixosModules.${host}];
|
|
|
|
config.deployment = {
|
|
|
|
targetHost = host;
|
|
|
|
targetUser = "root";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
)
|
|
|
|
hosts));
|
|
|
|
|
2022-03-25 18:46:53 +01:00
|
|
|
hydraJobs = {
|
2022-03-28 19:00:22 +02:00
|
|
|
shell.x86_64-linux = self.devShell.x86_64-linux;
|
2022-05-26 12:49:53 +02:00
|
|
|
packages = self.packages;
|
2022-03-28 19:00:22 +02:00
|
|
|
nixosConfigurations.x86_64-linux = builtins.listToAttrs (map (host: {
|
|
|
|
name = host;
|
|
|
|
value = self.nixosConfigurations.${host}.config.system.build.toplevel;
|
|
|
|
})
|
|
|
|
hosts);
|
2022-03-25 18:46:53 +01:00
|
|
|
};
|
|
|
|
|
2022-05-27 16:31:31 +02:00
|
|
|
packages.x86_64-linux.iso = self.nixosConfigurations.radix-balthica.config.system.build.isoImage;
|
|
|
|
packages.x86_64-linux.vm = self.nixosConfigurations.radix-balthica.config.system.build.vm;
|
2022-05-26 12:49:53 +02:00
|
|
|
|
2022-03-23 13:10:18 +01:00
|
|
|
outputsBuilder = channels: {
|
|
|
|
devShell = channels.nixpkgs.mkShell {
|
2022-09-11 11:38:25 +02:00
|
|
|
name = "system config devshell";
|
2022-03-23 13:10:18 +01:00
|
|
|
packages = let
|
2022-04-18 18:12:06 +02:00
|
|
|
personalCache = pkgs.writeShellApplication {
|
|
|
|
name = "personal-cache";
|
|
|
|
runtimeInputs = with pkgs; [
|
|
|
|
coreutils
|
|
|
|
nix
|
|
|
|
];
|
|
|
|
text = builtins.readFile ./scripts/personal-cache.sh;
|
|
|
|
};
|
|
|
|
|
|
|
|
rebuild = pkgs.writeShellApplication {
|
|
|
|
name = "rebuild";
|
|
|
|
runtimeInputs = with pkgs; [
|
|
|
|
coreutils
|
|
|
|
git
|
|
|
|
personalCache
|
|
|
|
nixos-rebuild
|
|
|
|
];
|
|
|
|
text = builtins.readFile ./scripts/rebuild.sh;
|
|
|
|
};
|
|
|
|
|
|
|
|
allHosts = pkgs.writeShellApplication {
|
|
|
|
name = "all-hosts";
|
|
|
|
runtimeInputs = with pkgs; [
|
|
|
|
jq
|
|
|
|
nix
|
|
|
|
];
|
|
|
|
text = ''
|
|
|
|
nix eval --json .#nixosConfigurations --apply builtins.attrNames 2>/dev/null | jq -r .[]
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
option = pkgs.writeShellApplication {
|
|
|
|
name = "option";
|
|
|
|
runtimeInputs = with pkgs; [
|
|
|
|
coreutils
|
|
|
|
nix
|
|
|
|
];
|
|
|
|
text = builtins.readFile ./scripts/option.sh;
|
|
|
|
};
|
|
|
|
|
|
|
|
testConfig = pkgs.writeShellApplication {
|
|
|
|
name = "test-config";
|
|
|
|
runtimeInputs = with pkgs; [
|
|
|
|
coreutils
|
|
|
|
nix
|
|
|
|
allHosts
|
|
|
|
nixos-rebuild
|
|
|
|
bat
|
|
|
|
];
|
|
|
|
text = builtins.readFile ./scripts/test-config.sh;
|
|
|
|
};
|
|
|
|
|
2022-03-23 13:10:18 +01:00
|
|
|
date = "${pkgs.coreutils}/bin/date";
|
|
|
|
git = "${pkgs.git}/bin/git";
|
|
|
|
nixos-rebuild = "${pkgs.nixos-rebuild}/bin/nixos-rebuild";
|
|
|
|
sops = "${pkgs.sops}/bin/sops";
|
|
|
|
bat = "${pkgs.bat}/bin/bat";
|
2022-04-12 10:08:59 +02:00
|
|
|
echo = "${pkgs.coreutils}/bin/echo";
|
|
|
|
pingPersonalCache = "${pkgs.nix}/bin/nix store ping --store ${personalCache} --option connect-timeout 1 --option download-attempt 1 2>/dev/null";
|
2022-03-23 13:10:18 +01:00
|
|
|
in
|
|
|
|
with pkgs; [
|
2022-04-18 18:12:06 +02:00
|
|
|
rebuild
|
|
|
|
personalCache
|
|
|
|
allHosts
|
|
|
|
option
|
|
|
|
testConfig
|
2022-03-23 13:10:18 +01:00
|
|
|
inputs.colmena.packages.x86_64-linux.colmena
|
|
|
|
fup-repl
|
|
|
|
alejandra
|
2022-09-12 13:00:29 +02:00
|
|
|
rnix-lsp
|
2022-03-23 13:10:18 +01:00
|
|
|
];
|
|
|
|
};
|
2021-12-22 21:37:23 +01:00
|
|
|
};
|
2022-03-23 13:10:18 +01:00
|
|
|
};
|
2021-05-19 23:08:18 +02:00
|
|
|
}
|