nixos/flake.nix

368 lines
11 KiB
Nix
Raw Normal View History

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";
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";
2021-12-26 21:49:18 +01:00
nixpkgs-wayland = {
url = "github:nix-community/nixpkgs-wayland";
};
emulator-2a = {
url = "github:MalteT/2a-emulator/main";
2021-12-26 21:49:18 +01:00
inputs.nixpkgs.follows = "nixpkgs";
};
mensa = {
2023-04-15 00:43:20 +02:00
url = "github:MalteT/mensa/main";
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";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
fend = {
url = "github:MalteT/fend/flake";
inputs.nixpkgs.follows = "nixpkgs";
};
hydra = {
url = "github:NixOS/hydra";
inputs.nixpkgs.follows = "nixForHydra/nixpkgs";
inputs.nix.follows = "nixForHydra";
};
nixForHydra = {
url = "github:nixos/nix/4acc684ef7b3117c6d6ac12837398a0008a53d85";
2022-09-26 17:34:01 +02:00
inputs.nixpkgs.follows = "nixpkgsForNixForHydra";
};
nixpkgsForNixForHydra = {
url = "github:NixOS/nixpkgs/04a75b2eecc0acf6239acf9dd04485ff8d14f425";
};
2022-12-22 12:33:49 +01:00
hyprland = {
url = "github:hyprwm/Hyprland";
inputs.nixpkgs.follows = "nixpkgs";
2022-12-22 12:33:49 +01:00
};
xdg-desktop-portal-hyprland = {
url = "github:hyprwm/xdg-desktop-portal-hyprland";
};
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;
};
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
};
outputs = {
self,
utils,
nixpkgs,
nixos-hardware,
...
} @ inputs: let
pkgs = self.pkgs.x86_64-linux.nixpkgs;
hosts = [
"helix-texta"
"murex-pecten"
"cornu-aspersum"
2023-01-15 16:52:17 +01:00
"granodomus-lima"
"trochulus-hispidus"
"radix-balthica"
2022-05-27 18:11:47 +02:00
"faunus-ater"
2022-12-01 15:33:12 +01:00
"polymita-picta"
];
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;}
];
in
utils.lib.mkFlake {
inherit self inputs;
supportedSystems = ["x86_64-linux"];
nix.generateRegistryFromInputs = true;
nix.linkInputs = true;
sharedOverlays = [
Update lockfile • Updated input 'cataclysm-dda': 'github:CleverRaven/Cataclysm-DDA/5a82316ecf75eacac29dd6580ef152aee5e7d159' (2022-09-23) → 'github:CleverRaven/Cataclysm-DDA/8e428ca5f21fb868b7eb6aa8380d1fcdbb960bd8' (2022-12-08) • Updated input 'colmena': 'github:zhaofengli/colmena/a8e6b999cfec9fadc2ca81994da44182e73be7eb' (2022-09-21) → 'github:zhaofengli/colmena/64c46fa0169233d4faed70c52583cd3183c7f5aa' (2022-12-01) • Added input 'colmena/flake-utils': 'github:numtide/flake-utils/c0e246b9b83f637f4681389ecabcb2681b4f3af0' (2022-08-07) • Updated input 'colmena/nix-eval-jobs/flake-utils': 'github:numtide/flake-utils/c0e246b9b83f637f4681389ecabcb2681b4f3af0' (2022-08-07) → follows 'colmena/flake-utils' • Updated input 'colmena/stable': 'github:NixOS/nixpkgs/879121648fe522b38cc1cf75aef160a14a1f2e7b' (2022-08-14) → 'github:NixOS/nixpkgs/731cc710aeebecbf45a258e977e8b68350549522' (2022-11-29) • Removed input 'colmena/utils' • Updated input 'fenix': 'github:nix-community/fenix/3c8bbc1d99e241efa29df54658615d7f8344c01f' (2022-09-23) → 'github:nix-community/fenix/e7941faba7f6cd0a6058330ad8c40d8dc52d741c' (2022-12-08) • Updated input 'fenix/rust-analyzer-src': 'github:rust-lang/rust-analyzer/5b49745d009634170493a214364261e36228274b' (2022-09-20) → 'github:rust-lang/rust-analyzer/6e8a54d0f68702cf7981c8299357838eb0f4d5b2' (2022-12-07) • Updated input 'home-manager': 'github:nix-community/home-manager/bd83eab6220226085c82e637931a7ae3863d9893' (2022-09-22) → 'github:nix-community/home-manager/2af0d07678fc15612345e0dd55337550dcf6465f' (2022-12-05) • Updated input 'home-manager/utils': 'github:numtide/flake-utils/c0e246b9b83f637f4681389ecabcb2681b4f3af0' (2022-08-07) → 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02) • Updated input 'hydra': 'github:NixOS/hydra/53335323ae79ca1a42643f58e520b376898ce641' (2022-09-22) → 'github:NixOS/hydra/d1fac69c213002721971cd983e2576b784677d40' (2022-12-05) • Updated input 'jovian-nixos': 'github:Jovian-Experiments/Jovian-NixOS/cc896be6a3ebbccf04e7e07e89b666fa091a846a' (2022-11-14) → 'github:Jovian-Experiments/Jovian-NixOS/6d70c2fda85377e1fd7f2ede9ac82ff02dfeb0d5' (2022-12-04) • Updated input 'nickel': 'github:tweag/nickel/12298a821c46459aa3651b5645a4c69340a25cd4' (2022-09-21) → 'github:tweag/nickel/6110c7f61e46f39e57503889b8f699de8ef3d41e' (2022-12-07) • Added input 'nickel/crane': 'github:ipetkov/crane/24591d5f8cc979f7b243b88a2d39da09976970ad' (2022-11-28) • Added input 'nickel/crane/flake-compat': 'github:edolstra/flake-compat/b4a34015c698c7793d592d66adbab377907a2be8' (2022-04-19) • Added input 'nickel/crane/flake-utils': 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02) • Added input 'nickel/crane/nixpkgs': follows 'nickel/nixpkgs' • Added input 'nickel/crane/rust-overlay': 'github:oxalica/rust-overlay/cf668f737ac986c0a89e83b6b2e3c5ddbd8cf33b' (2022-11-03) • Added input 'nickel/crane/rust-overlay/flake-utils': follows 'nickel/crane/flake-utils' • Added input 'nickel/crane/rust-overlay/nixpkgs': follows 'nickel/crane/nixpkgs' • Updated input 'nickel/flake-utils': 'github:numtide/flake-utils/c0e246b9b83f637f4681389ecabcb2681b4f3af0' (2022-08-07) → 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02) • Updated input 'nickel/pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/8cb8ea5f1c7bc2984f460587fddd5f2e558f6eb8' (2022-08-18) → 'github:cachix/pre-commit-hooks.nix/2597510df32efafda4d05f5122efe612a7a5da66' (2022-12-03) • Added input 'nickel/pre-commit-hooks/flake-compat': 'github:edolstra/flake-compat/009399224d5e398d03b22badca40a37ac85412a1' (2022-11-17) • Added input 'nickel/pre-commit-hooks/gitignore': 'github:hercules-ci/gitignore.nix/a20de23b925fd8264fd7fad6454652e142fd7f73' (2022-08-14) • Added input 'nickel/pre-commit-hooks/gitignore/nixpkgs': follows 'nickel/pre-commit-hooks/nixpkgs' • Added input 'nickel/pre-commit-hooks/nixpkgs-stable': 'github:NixOS/nixpkgs/cf63ade6f74bbc9d2a017290f1b2e33e8fbfa70a' (2022-11-20) • Updated input 'nickel/rust-overlay': 'github:oxalica/rust-overlay/8ac6d40380dc4ec86f1ff591d5c14c8ae1d77a18' (2022-09-03) → 'github:oxalica/rust-overlay/a0d5773275ecd4f141d792d3a0376277c0fc0b65' (2022-12-03) • Updated input 'nix-colors': 'github:Misterio77/nix-colors/787b9599227dbf09847e3b3d23187b88ba14e14a' (2022-09-21) → 'github:Misterio77/nix-colors/fcd345bd1c9e7c203c3320ee6ca39814c97ac1fe' (2022-12-05) • Updated input 'nix-colors/base16-schemes': 'github:base16-project/base16-schemes/7c247f734eac7f04518c6e28d098635ee8dcabf5' (2022-06-10) → 'github:tinted-theming/base16-schemes/a3dc916cf90471a422c0bfe1bb4b1bdd12185ced' (2022-10-13) • Updated input 'nixos-hardware': 'github:NixOS/nixos-hardware/a0df6cd6e199df4a78c833c273781ea92fa62cfb' (2022-09-15) → 'github:NixOS/nixos-hardware/9d87bc030a0bf3f00e953dbf095a7d8e852dab6b' (2022-12-04) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/d6490a0bd9dfb298fcd8382d3363b86870dc7340' (2022-09-21) → 'github:NixOS/nixpkgs/6e51c97f1c849efdfd4f3b78a4870e6aa2da4198' (2022-12-05) • Updated input 'nixpkgs-wayland': 'github:nix-community/nixpkgs-wayland/f6259c8daf197480297c33a442d78175b8b417b2' (2022-09-22) → 'github:nix-community/nixpkgs-wayland/5097457af8e9dcf45a68fa892716919ad28e545a' (2022-12-08) • Removed input 'nixpkgs-wayland/cachix' • Updated input 'nixpkgs-wayland/flake-compat': 'github:edolstra/flake-compat/b4a34015c698c7793d592d66adbab377907a2be8' (2022-04-19) → 'github:edolstra/flake-compat/009399224d5e398d03b22badca40a37ac85412a1' (2022-11-17) • Updated input 'nixpkgs-wayland/lib-aggregate': 'github:nix-community/lib-aggregate/05a081a254f4bc7ca026a6ebdcf9864170208bc3' (2022-09-18) → 'github:nix-community/lib-aggregate/c0f784c05c85422cd7d532fd1a630ba5e8f2348f' (2022-12-04) • Updated input 'nixpkgs-wayland/lib-aggregate/flake-utils': 'github:numtide/flake-utils/c0e246b9b83f637f4681389ecabcb2681b4f3af0' (2022-08-07) → 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02) • Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib': 'github:nix-community/nixpkgs.lib/30286fa7fb374fa3ffc80ac35eb7fadf572ae357' (2022-09-18) → 'github:nix-community/nixpkgs.lib/77e67cb65014fb75c1c8ccfec60e9bd8b7d02c94' (2022-12-04) • Added input 'nixpkgs-wayland/nix-eval-jobs': 'github:nix-community/nix-eval-jobs/6117ef2024f679d5c52876031880b752f2be4517' (2022-12-08) • Added input 'nixpkgs-wayland/nix-eval-jobs/flake-utils': 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02) • Added input 'nixpkgs-wayland/nix-eval-jobs/nixpkgs': follows 'nixpkgs-wayland/nixpkgs' • Updated input 'qmk-udev-rules': 'github:qmk/qmk_firmware/3b7aeddc4dea42f9c7850b2a39661349d0b1352e' (2022-09-22) → 'github:qmk/qmk_firmware/bb3d694875e4b02d0befee60853d3f5997acabb8' (2022-12-07) • Updated input 'sops-nix': 'github:Mic92/sops-nix/bae718a9d1e31ec478ddfcb75149f66e9625a825' (2022-09-18) → 'github:Mic92/sops-nix/da98a111623101c64474a14983d83dad8f09f93d' (2022-12-04) • Removed input 'sops-nix/nixpkgs-22_05' • Added input 'sops-nix/nixpkgs-stable': 'github:NixOS/nixpkgs/86370507cb20c905800527539fc049a2bf09c667' (2022-12-04)
2022-12-08 12:07:35 +01:00
inputs.fenix.overlays.default
inputs.colmena.overlay
inputs.xdg-desktop-portal-hyprland.overlays.default
utils.overlay
(self: super: {
# Add fonts
hackNerdLigatures = super.callPackage ./pkgs/hack.nix {};
# 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 {};
# TODO: Replace with upstream
2022-05-30 18:35:52 +02:00
inherit (inputs.fend.packages.x86_64-linux) fend;
2022-09-23 12:23:03 +02:00
hydra = inputs.hydra.packages.x86_64-linux.default;
# TODO: Remove once hydra fixes these removed aliases
2022-05-30 18:35:52 +02:00
inherit (super.perlPackages) buildPerlPackage;
netcat-openbsd = super.libressl.nc;
})
# 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)
(import ./overlays/prometheus-fritzbox-exporter.nix)
(import ./overlays/waybar-hypr.nix)
];
2021-12-04 15:07:07 +01:00
hostDefaults.system = "x86_64-linux";
hostDefaults.modules = defaultModules;
2022-01-06 10:22:46 +01:00
hosts = builtins.listToAttrs (map (host: {
name = host;
value = {modules = [self.nixosModules.${host}];};
})
hosts);
nixosModules = {
2022-05-30 18:35:52 +02:00
home-manager-config = _: {
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
};
nixUnstable = {pkgs, ...}: {
nix.registry.nixpkgs.flake = nixpkgs;
nix.package = pkgs.nixUnstable;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
};
2021-12-04 15:07:07 +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
];
};
cornu-aspersum = {...}: {
imports = [
./hosts/cornu-aspersum.nix
./hardware/netcup-rs-2000-g9.nix
./modules/nginx-reverse-proxy.nix
];
2021-11-29 16:36:57 +01:00
};
2023-01-15 16:52:17 +01:00
granodomus-lima = {...}: {
imports = [
./hosts/granodomus-lima.nix
./hardware/netcup-vps-200-g10.nix
./modules/nginx-reverse-proxy.nix
];
};
trochulus-hispidus = {pkgs, ...}: {
imports = [
./hosts/trochulus-hispidus.nix
./hardware/latitude-e7440.nix
nixos-hardware.nixosModules.common-cpu-intel
nixos-hardware.nixosModules.common-pc-laptop
nixos-hardware.nixosModules.common-pc-laptop-ssd
];
};
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
];
};
radix-balthica = {...}: {
2022-05-13 18:14:08 +02:00
imports = [
./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 = [
./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
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));
hydraJobs = {
2022-03-28 19:00:22 +02:00
shell.x86_64-linux = self.devShell.x86_64-linux;
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);
};
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;
outputsBuilder = channels: {
devShell = channels.nixpkgs.mkShell {
2022-09-11 11:38:25 +02:00
name = "system config devshell";
packages = let
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;
};
git = "${pkgs.git}/bin/git";
nixos-rebuild = "${pkgs.nixos-rebuild}/bin/nixos-rebuild";
bat = "${pkgs.bat}/bin/bat";
in
with pkgs; [
rebuild
personalCache
allHosts
option
testConfig
inputs.colmena.packages.x86_64-linux.colmena
fup-repl
alejandra
2023-01-06 10:16:46 +01:00
nil
];
};
2021-12-22 21:37:23 +01:00
};
};
2021-05-19 23:08:18 +02:00
}