Go to file
Astro fca9a7f859 lib/default-gateway.nix: set only when running without systemd-networkd
this would need GatewayOnLink=yes for the route on the interface
2021-03-06 01:10:53 +01:00
ansible Add more tools, only apply sysctl when changed 2021-03-04 18:46:03 +01:00
hosts lib/default-gateway.nix: set only when running without systemd-networkd 2021-03-06 01:10:53 +01:00
kubernetes update deployer 2019-07-03 20:16:11 +02:00
lib lib/default-gateway.nix: set only when running without systemd-networkd 2021-03-06 01:10:53 +01:00
nixpkgs-overlay s/bmdx/bmxd/g 2021-03-04 17:23:28 +01:00
overlay freifunk: pin firmware/server revs 2021-03-05 00:43:12 +01:00
secrets@0efb7df81d Merge branch 'master' of ssh://gitea.c3d2.de:2222/C3D2/nix-config 2020-12-09 01:23:45 +01:00
.gitignore Add "result" to .gitignore 2019-11-29 14:21:52 +01:00
.gitmodules Replace yggdrasil submodule with an input 2019-11-09 16:52:22 +01:00
README.md Flakify dhcp 2021-02-24 14:14:48 +01:00
flake.lock freifunk: obtain flaky secrets 2021-03-05 01:16:57 +01:00
flake.nix flake.nix: implement --flakify switch for converting hosts to flakes 2021-03-05 01:26:19 +01:00
host-registry.nix host-registry: add freifunk 2021-03-05 01:16:16 +01:00
hq.nixops hq.nixops: update public-access-proxy address 2020-05-22 19:09:47 +02:00
install-host.sh pulsebert: add home-manager home.nix 2019-02-19 23:30:27 +01:00
krops.nix Flakify freifunk container 2021-02-26 20:23:24 +01:00
nix-maintenance.sh add nix-maintenance.sh 2019-02-18 19:56:44 +01:00

README.md

Setup

Flakes

Nix with flakes support is required. Run this in a shell…

# Enter a temporary shell with flakes support:
nix-shell --packages nixFlakes

# Set some configuration (do this only once):
echo 'experimental-features = nix-command flakes' >> ~/.config/nix/nix.conf

# Add this repository to your local flake registry:
nix registry add c3d2 git+https://gitea.c3d2.de/C3D2/nix-config

…or set this to your NixOS configuration:

{ pkgs, ... }: {
  nix = {
    package = pkgs.nixFlakes;
    extraOptions = "experimental-features = nix-command flakes";
  };
}

And add this repository to your local flake registry:

nix registry add c3d2 git+https://gitea.c3d2.de/C3D2/nix-config

Deployment

Beide failen bei Activation des neuen Profils. (TODO)

Mit flakes

Remote deployment

Use nix run with one of the deploy scripts exported by the flake, for example: nix run c3d2#glotzbert-nixos-rebuild switch. Use nix flake show c3d2 to show what is available. Note that the deploy scripts only work if the target machines already has flakes enabled.

Local deployment

Running nixos-rebuild --flake c3d2 switch on a machine should be sufficient to update that machine to the current configuration and Nixpkgs revision.

Mit NixOps

The official way for deployment is through deployer.serv.zentralwerk.org

Deploy changes

Use deployer system:

ssh k-ot@172.20.73.9
cd nix-config/
nixops deploy -d hq --check --include=[hostname]

Creating new Container

This does not work yet, as the nixos-system-x86_64-linux.tar.xz image is broken.

  1. log into any proxmox server
  2. pct create [num] cephfs-iso:vztmpl/nixos-system-x86_64-linux.tar.xz -ostype unmanaged -net0 name=eth0,bridge=vmbr0,tag=[vlantag] -storage vms -hostname [hostname]
  3. adjustments through ui if necessary
  4. Adjust hq.nixops, add [hostname]
  5. Run
    ssh k-ot@172.20.73.16
    cd nix-config/
    nixops deploy -d hq --check --include=[hostname]
    

Tarballs can be built for containers using config.system.build.tarball.

nix build c3d2#nixosConfigurations.dhcp.config.system.build.tarball

Mit nixos-switch rebuild

nixos-rebuild switch -I nixos-config=./hosts/containers/$HOST/configuration.nix --target-host "root@$HOST.hq.c3d2.de"

Secrets

Add your gpg-id to the .gpg-id file in secrets and let somebody reencrypt it for you. Maybe this works for you, maybe not. I did it somehow:

PASSWORD_STORE_DIR=`pwd` tr '\n' ' ' < .gpg-id | xargs -I{} pass init {}

Your gpg key has to have the Authenticate flag set. If not update it and push it to a keyserver and wait. This is necessary, so you can login to any machine with your gpg key.

Laptops / Desktops

This repository contains a NixOS module that can be used with personal machines as well. This module appends /etc/ssh/ssh_known_hosts with the host keys of registered HQ hosts, and optionally appends /etc/hosts with static IPv6 addresses local to HQ. Simply import the lib directory to use the module. As an example:

# /etc/nixos/configuration.nix
{ config, pkgs, lib, ... }:
let
  c3d2Config =
    builtins.fetchGit { url = "https://gitea.c3d2.de/C3D2/nix-config.git"; };
in {
  imports = [
    # ...
    "${c3d2Config}/lib"
  ];

  c3d2 = {
    isInHq = false; # not in HQ, this is the default.
    mapHqHosts = true; # Make entries in /etc/hosts for *.hq internal addresses.
    enableMotd = true; # Set the login shell message to the <<</>> logo.
  };

  # ...
}