let nixpkgs-tar = builtins.fetchTarball (import ./nixpkgs.nix); nixpkgs = import "${nixpkgs-tar}" {}; nixos = import "${nixpkgs-tar}/nixos"; # TODO(bsima): buildNixOS should be split into multiple functions that each # return one thing, instead of a single function that returns multiple things buildOS = import ./Com/Simatime/buildOS.nix nixos; buildHaskellApp = import ./Com/Simatime/buildHaskellApp.nix nixpkgs; nixos-mailserver = builtins.fetchTarball { url = "https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/archive/v2.2.1/nixos-mailserver-v2.2.1.tar.gz"; sha256 = "03d49v8qnid9g9rha0wg2z6vic06mhp0b049s3whccn1axvs2zzx"; }; in { Com.Simatime = buildOS { enableVpn = true; ipAddress = "159.89.128.69"; vpnRsaPrivateKeyFile = "/etc/tinc/rsa_key.priv"; vpnEd25519PrivateKeyFile = "/etc/tinc/ed25519_key.priv"; configuration = { imports = [ ./Com/Simatime/hardware.nix ./Com/Simatime/networking.nix # common infra ./Com/Simatime/packages.nix # configured modules ./Com/Simatime/git.nix ./Com/Simatime/mail.nix ./Com/Simatime/web.nix ./Com/Simatime/znc.nix # third party nixos-mailserver ]; programs.mosh = { enable = true; withUtempter = true; }; }; } // { dev = buildOS { enableVpn = true; ipAddress = "69.181.254.154"; vpnConnectTo = "com.simatime"; vpnRsaPrivateKeyFile = "/etc/tinc/rsa_key.priv"; vpnEd25519PrivateKeyFile = "/etc/tinc/ed25519_key.priv"; configuration = { imports = [ ./Com/Simatime/packages.nix ./Com/Simatime/dev/hardware.nix ./Com/Simatime/dev/configuration.nix ]; }; }; }; Com.RunServal = buildOS { configuration = { imports = [ ./Com/Simatime/packages.nix ./Com/RunServal/hardware.nix ./Com/RunServal/networking.nix ]; networking.hostName = "serval"; boot.enableContainers = true; }; }; Com.InfluencedByBooks = buildOS { configuration = { imports = [ ./Com/InfluencedByBooks/service.nix # common infra ./Com/Simatime/packages.nix ]; nixpkgs.config.allowUnfree = true; boot.isContainer = true; networking.useDHCP = false; }; } // (buildHaskellApp { name = "Com.InfluencedByBooks"; nick = "ibb"; apex = "Com.InfluencedByBooks.Apex"; aero = "Com.InfluencedByBooks.Aero"; deps = { both = [ "clay" "miso" "protolude" "servant" "text" ]; apex = [ "MonadRandom" "acid-state" "blaze-html" "blaze-markup" "bytestring" "ixset" "random" "safecopy" "scotty" "servant-server" "text" ]; aero = [ "aeson" "containers" "ghcjs-base" ]; }; }); }