xin/flake.nix

325 lines
10 KiB
Nix
Raw Normal View History

2022-08-25 12:21:35 -06:00
{
description = "bold.daemon";
inputs = {
2022-10-29 11:00:07 -06:00
unstable.url = "github:NixOS/nixpkgs";
2022-08-27 07:45:25 -06:00
unstableSmall.url = "github:NixOS/nixpkgs/nixos-unstable-small";
2022-11-22 21:30:31 -07:00
oldStable.url = "github:NixOS/nixpkgs/nixos-22.05-small";
stable.url = "github:NixOS/nixpkgs/nixos-22.11-small";
2022-12-28 14:42:00 -07:00
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs-stable.follows = "stable";
inputs.nixpkgs.follows = "unstable";
};
xin-secrets = {
url = "git+ssh://xin-secrets-ro/qbit/xin-secrets.git?ref=main";
inputs.sops-nix.follows = "sops-nix";
};
2022-09-01 11:49:36 -06:00
nixos-hardware = { url = "github:NixOS/nixos-hardware/master"; };
reform = { url = "github:nix-community/hardware-mnt-reform"; };
2022-08-25 12:21:35 -06:00
emacs-overlay = {
url =
2022-11-28 05:55:41 -07:00
"github:nix-community/emacs-overlay/d54a1521619daa37c9aa8c9e3362abb34e676007";
2022-08-25 12:21:35 -06:00
inputs.nixpkgs.follows = "stable";
};
darwin = {
url = "github:lnl7/nix-darwin";
2022-09-09 10:37:15 -06:00
inputs.nixpkgs.follows = "unstableSmall";
2022-08-25 12:21:35 -06:00
};
sshKnownHosts = {
url = "github:qbit/ssh_known_hosts";
flake = false;
};
2022-11-16 20:28:42 -07:00
microca = {
url = "github:qbit/microca";
inputs.nixpkgs.follows = "unstable";
};
gostart = {
url = "github:qbit/gostart";
2022-11-25 07:50:55 -07:00
inputs.nixpkgs.follows = "unstable";
};
2022-11-16 20:28:42 -07:00
taskobs = {
url = "github:qbit/taskobs";
inputs.nixpkgs.follows = "unstable";
};
xintray = {
url = "github:qbit/xintray";
inputs.nixpkgs.follows = "unstable";
};
tsvnstat = {
2022-12-10 09:52:32 -07:00
url = "github:qbit/tsvnstat";
2022-11-16 20:28:42 -07:00
inputs.nixpkgs.follows = "unstable";
};
pots = {
url = "github:qbit/pots";
inputs.nixpkgs.follows = "unstable";
};
2023-01-29 06:11:36 -07:00
po = {
url = "github:qbit/po";
inputs.nixpkgs.follows = "unstable";
};
2023-01-31 12:55:24 -07:00
tsRevProx = {
url = "github:qbit/ts-reverse-proxy";
inputs.nixpkgs.follows = "unstable";
};
2022-08-25 12:21:35 -06:00
mcchunkie = {
url = "github:qbit/mcchunkie";
flake = false;
};
gqrss = {
url = "github:qbit/gqrss";
flake = false;
};
2022-08-30 15:56:37 -06:00
peerix = {
url = "github:cid-chan/peerix";
inputs.nixpkgs.follows = "stable";
};
2022-12-15 08:26:49 -07:00
talon = {
url = "github:qbit/talon-nix";
2022-12-15 08:26:49 -07:00
inputs.nixpkgs.follows = "unstable";
};
2022-08-25 12:21:35 -06:00
};
2022-12-28 14:42:00 -07:00
outputs = { self, unstable, unstableSmall, stable, oldStable, nixos-hardware
2023-01-29 06:11:36 -07:00
, reform, sshKnownHosts, microca, gostart, xintray, tsvnstat, pots, po
2023-01-31 12:55:24 -07:00
, tsRevProx, taskobs, mcchunkie, gqrss, darwin, xin-secrets, talon, peerix
, ... }@inputs:
2022-08-25 12:21:35 -06:00
let
2023-02-02 05:35:19 -07:00
xinlib = import ./lib;
supportedSystems = [ "x86_64-linux" ];
#[ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
2022-10-12 07:13:52 -06:00
forAllSystems = unstable.lib.genAttrs supportedSystems;
nixpkgsFor = forAllSystems (system: import unstable { inherit system; });
2022-08-25 12:21:35 -06:00
hostBase = {
modules = [
# Common config stuffs
(import (./default.nix))
(import "${sshKnownHosts}")
xin-secrets.nixosModules.sops
xin-secrets.nixosModules.xin-secrets
2022-08-31 08:00:21 -06:00
peerix.nixosModules.peerix
2022-08-25 12:21:35 -06:00
];
};
2022-09-04 08:04:56 -06:00
overlays = [
2022-11-16 20:24:40 -07:00
inputs.emacs-overlay.overlay
inputs.peerix.overlay
inputs.microca.overlay
inputs.taskobs.overlay
2022-11-22 21:30:31 -07:00
inputs.reform.overlay
inputs.gostart.overlay
inputs.pots.overlay
2023-01-31 12:55:24 -07:00
inputs.tsRevProx.overlay
2022-12-15 08:26:49 -07:00
inputs.talon.overlays.default
2022-09-04 08:04:56 -06:00
];
2022-08-25 12:21:35 -06:00
# Set our configurationRevison based on the status of our git repo.
# If the repo is dirty, disable autoUpgrade as it means we are
# testing something.
2022-08-25 12:21:35 -06:00
buildSys = sys: sysBase: extraMods: name:
sysBase.lib.nixosSystem {
system = sys;
2023-02-02 05:35:19 -07:00
specialArgs = {
inherit inputs;
inherit xinlib;
};
2022-08-25 12:21:35 -06:00
modules = hostBase.modules ++ extraMods ++ [{
nix = {
registry.nixpkgs.flake = sysBase;
registry.stable.flake = stable;
registry.unstable.flake = unstable;
2023-01-05 06:45:49 -07:00
nixPath = [ "nixpkgs=${sysBase}" ];
2022-08-25 12:21:35 -06:00
};
}] ++ [ (xinlib.buildVer self) (./. + "/hosts/${name}") ]
2022-08-25 12:21:35 -06:00
++ [{ nixpkgs.overlays = overlays; }];
};
pkgs = unstable.legacyPackages.x86_64-linux;
2022-09-09 09:56:41 -06:00
darwinPkgs = unstableSmall.legacyPackages.aarch64-darwin;
2022-08-25 12:21:35 -06:00
in {
darwinConfigurations = {
plq = darwin.lib.darwinSystem {
system = "aarch64-darwin";
modules = [
xin-secrets.nixosModules.sops
(import "${sshKnownHosts}")
./overlays
./hosts/plq
];
};
};
2022-09-01 11:49:36 -06:00
formatter.x86_64-linux = stable.legacyPackages.x86_64-linux.nixfmt;
formatter.aarch64-darwin = stable.legacyPackages.aarch64-darwin.nixfmt;
devShells.x86_64-linux.default = xinlib.buildShell pkgs;
devShells.aarch64-darwin.default = xinlib.buildShell darwinPkgs;
2022-08-25 12:21:35 -06:00
nixosConfigurations = {
europa = buildSys "x86_64-linux" unstable [
2022-12-15 08:26:49 -07:00
nixos-hardware.nixosModules.framework
talon.nixosModules.talon
] "europa";
2022-12-31 05:53:50 -07:00
pwntie = buildSys "x86_64-linux" unstable [ ] "pwntie";
stan = buildSys "x86_64-linux" unstable [ ] "stan";
2023-01-04 06:57:30 -07:00
#weather = buildSys "aarch64-linux" stable
# [ nixos-hardware.nixosModules.raspberry-pi-4 ] "weather";
2022-10-10 08:05:37 -06:00
faf = buildSys "x86_64-linux" stable [ ./configs/hardened.nix ] "faf";
box = buildSys "x86_64-linux" stable [ ./configs/hardened.nix ] "box";
2023-01-04 06:57:30 -07:00
#luna = buildSys "x86_64-linux" stable
# [ "${nixos-hardware}/common/cpu/intel" ] "luna";
h = buildSys "x86_64-linux" stable [
./configs/hardened.nix
gostart.nixosModule
pots.nixosModule
] "h";
2023-01-04 06:57:30 -07:00
#router =
# buildSys "x86_64-linux" stable [ ./configs/hardened.nix ] "router";
2022-08-25 12:21:35 -06:00
2022-10-28 12:01:44 -06:00
weatherInstall = stable.lib.nixosSystem {
2022-08-25 12:21:35 -06:00
system = "aarch64-linux";
modules = [
(import (./installer.nix))
xin-secrets.nixosModules.sops
(import "${sshKnownHosts}")
"${stable}/nixos/modules/installer/sd-card/sd-image-aarch64-installer.nix"
];
};
2022-11-22 21:30:31 -07:00
reformInstall = oldStable.lib.nixosSystem {
system = "aarch64-linux";
modules = [
reform.nixosModule
(import (./installer.nix))
xin-secrets.nixosModules.sops
(import "${sshKnownHosts}")
"${reform}/nixos/installer.nix"
];
};
2022-08-25 12:21:35 -06:00
isoInstall = stable.lib.nixosSystem {
system = "x86_64-linux";
modules = [
(xinlib.buildVer self)
2022-08-25 12:21:35 -06:00
(import (./installer.nix))
xin-secrets.nixosModules.sops
(import "${sshKnownHosts}")
"${stable}/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma5.nix"
2022-08-25 12:21:35 -06:00
];
};
};
2022-09-06 13:49:01 -06:00
2022-10-12 07:13:52 -06:00
packages = forAllSystems (system:
let pkgs = nixpkgsFor.${system};
in {
ada_language_server =
pkgs.callPackage ./pkgs/ada_language_server.nix { inherit pkgs; };
2022-10-20 07:46:44 -06:00
alire = pkgs.callPackage ./pkgs/alire.nix { inherit pkgs; };
gqrss = pkgs.callPackage ./pkgs/gqrss.nix {
inherit pkgs;
isUnstable = true;
};
icbirc = pkgs.callPackage ./pkgs/icbirc.nix {
inherit pkgs;
isUnstable = true;
};
2022-11-28 21:36:55 -07:00
kurinto = pkgs.callPackage ./pkgs/kurinto.nix { };
mcchunkie = pkgs.callPackage ./pkgs/mcchunkie.nix {
inherit pkgs;
isUnstable = true;
};
yarr = pkgs.callPackage ./pkgs/yarr.nix {
inherit pkgs;
isUnstable = true;
};
2022-12-02 15:01:05 -07:00
precursorupdater = pkgs.callPackage ./pkgs/precursorupdater.nix {
inherit pkgs;
2023-02-06 09:46:46 -07:00
inherit (pkgs.python39Packages) buildPythonPackage fetchPypi;
inherit (pkgs.python39Packages) pyusb progressbar2 requests;
};
kobuddy = pkgs.python3Packages.callPackage ./pkgs/kobuddy.nix {
2023-02-08 06:27:19 -07:00
inherit pkgs;
};
ghexport = pkgs.python3Packages.callPackage ./pkgs/ghexport.nix {
inherit pkgs;
};
hpi =
pkgs.python3Packages.callPackage ./pkgs/hpi.nix { inherit pkgs; };
promnesia = pkgs.python3Packages.callPackage ./pkgs/promnesia.nix {
2023-02-06 09:46:46 -07:00
inherit pkgs;
2022-12-02 15:01:05 -07:00
};
2023-01-20 12:36:46 -07:00
tailscaleSystray =
pkgs.callPackage ./pkgs/tailscale-systray.nix { inherit pkgs; };
golink = pkgs.callPackage ./pkgs/golink.nix { inherit pkgs; };
2023-01-14 05:35:59 -07:00
gokrazy = pkgs.callPackage ./pkgs/gokrazy.nix { inherit pkgs; };
2022-10-17 11:12:01 -06:00
gosignify = pkgs.callPackage ./pkgs/gosignify.nix { inherit pkgs; };
2022-11-29 06:24:55 -07:00
gotosocial = pkgs.callPackage ./pkgs/gotosocial.nix { inherit pkgs; };
2022-11-01 10:35:42 -06:00
govulncheck =
pkgs.callPackage ./pkgs/govulncheck.nix { inherit pkgs; };
zutty = pkgs.callPackage ./pkgs/zutty.nix {
inherit pkgs;
isUnstable = true;
};
rkvm = pkgs.callPackage ./pkgs/rkvm.nix { inherit pkgs; };
2022-11-16 15:00:30 -07:00
inherit (xintray.packages.${system}) xintray;
2022-11-16 20:24:40 -07:00
inherit (tsvnstat.packages.${system}) tsvnstat;
inherit (pots.packages.${system}) pots;
2023-01-29 06:11:36 -07:00
inherit (po.packages.${system}) po;
2023-01-31 12:55:24 -07:00
inherit (tsRevProx.packages.${system}) ts-reverse-proxy;
2022-10-12 07:13:52 -06:00
});
2022-09-19 07:05:32 -06:00
templates."ada" = {
path = ./templates/ada;
description = "Ada template.";
};
2022-09-06 13:49:01 -06:00
templates."go" = {
path = ./templates/go;
description = "Go template.";
};
2022-09-23 16:33:22 -06:00
templates."perl" = {
path = ./templates/perl;
description = "Perl template.";
};
2022-09-27 17:33:33 -06:00
templates."mojo" = {
path = ./templates/mojo;
description = "Perl MojoLicious template.";
};
2022-10-05 21:46:32 -06:00
templates."ocaml" = {
path = ./templates/ocaml;
description = "OCaml template.";
};
# TODO: magicify this to be built of a list
checks.x86_64-linux.europa =
self.nixosConfigurations.europa.config.system.build.toplevel;
checks.x86_64-linux.stan =
self.nixosConfigurations.europa.config.system.build.toplevel;
checks.x86_64-linux.h =
self.nixosConfigurations.h.config.system.build.toplevel;
checks.x86_64-linux.box =
self.nixosConfigurations.box.config.system.build.toplevel;
checks.x86_64-linux.faf =
self.nixosConfigurations.faf.config.system.build.toplevel;
2022-08-25 12:21:35 -06:00
};
}