diff options
| -rw-r--r-- | old/modules/cloudkrebs/default.nix | 8 | ||||
| -rw-r--r-- | old/modules/cloudkrebs/retiolum.nix (renamed from old/modules/lass/retiolum-cloudkrebs.nix) | 4 | ||||
| -rw-r--r-- | old/modules/lass/base.nix | 61 | ||||
| -rw-r--r-- | old/modules/lass/desktop-base.nix | 30 | ||||
| -rw-r--r-- | old/modules/lass/iptables/config.nix | 119 | ||||
| -rw-r--r-- | old/modules/lass/iptables/default.nix | 11 | ||||
| -rw-r--r-- | old/modules/lass/iptables/options.nix | 44 | ||||
| -rw-r--r-- | old/modules/lass/ircd.nix | 27 | ||||
| -rw-r--r-- | old/modules/lass/retiolum-uriel.nix | 21 | ||||
| -rw-r--r-- | old/modules/lass/vim.nix | 2 | ||||
| -rw-r--r-- | old/modules/lass/xserver-lass.nix | 43 | ||||
| -rw-r--r-- | old/modules/mors/default.nix | 25 | ||||
| -rw-r--r-- | old/modules/mors/git.nix | 161 | ||||
| -rw-r--r-- | old/modules/mors/paths.nix | 12 | ||||
| -rw-r--r-- | old/modules/mors/repos.nix | 9 | ||||
| -rw-r--r-- | old/modules/mors/retiolum.nix (renamed from old/modules/lass/retiolum-mors.nix) | 6 | ||||
| -rw-r--r-- | old/modules/uriel/default.nix | 10 | ||||
| -rw-r--r-- | old/modules/uriel/git.nix | 130 | ||||
| -rw-r--r-- | old/modules/uriel/retiolum.nix | 31 | 
19 files changed, 588 insertions, 166 deletions
| diff --git a/old/modules/cloudkrebs/default.nix b/old/modules/cloudkrebs/default.nix index 938447e0e..135b662f9 100644 --- a/old/modules/cloudkrebs/default.nix +++ b/old/modules/cloudkrebs/default.nix @@ -3,7 +3,7 @@  {    imports = [      ../tv/base-cac-CentOS-7-64bit.nix -    ../lass/retiolum-cloudkrebs.nix +    ./retiolum.nix      ./networking.nix      ../../secrets/cloudkrebs-pw.nix      ../lass/sshkeys.nix @@ -18,8 +18,10 @@    nix.maxJobs = 1; -  #activationScripts -  #split up and move into base +  #tmpfiles Unknown group 'lock' workaround: +  users.extraGroups = { +    lock.gid = 10001; +  };    #TODO move into modules    users.extraUsers = { diff --git a/old/modules/lass/retiolum-cloudkrebs.nix b/old/modules/cloudkrebs/retiolum.nix index 1f035271d..1caa9246e 100644 --- a/old/modules/lass/retiolum-cloudkrebs.nix +++ b/old/modules/cloudkrebs/retiolum.nix @@ -2,10 +2,10 @@  {    imports = [ -    ../tv/retiolum.nix +    ../tv/retiolum    ]; -  services.retiolum = { +  tv.retiolum = {      enable = true;      hosts = ../../hosts;      privateKeyFile = "/etc/nixos/secrets/cloudkrebs.retiolum.rsa_key.priv"; diff --git a/old/modules/lass/base.nix b/old/modules/lass/base.nix index 3a8d879eb..159372a24 100644 --- a/old/modules/lass/base.nix +++ b/old/modules/lass/base.nix @@ -3,6 +3,7 @@  {    imports = [      ./sshkeys.nix +    ./iptables    ];    nix.useChroot = true; @@ -65,6 +66,10 @@      '';    }; +  security.setuidPrograms = [ +    "sendmail" +  ]; +    services.gitolite = {      enable = true;      dataDir = "/home/gitolite"; @@ -84,27 +89,41 @@      RuntimeMaxUse=128M    ''; -  networking.firewall = { +  lass.iptables = {      enable = true; - -    allowedTCPPorts = [ -      22 -    ]; - -    extraCommands = '' -      iptables -A INPUT -j ACCEPT -m conntrack --ctstate RELATED,ESTABLISHED -      iptables -A INPUT -j ACCEPT -i lo -      iptables -A INPUT -j ACCEPT -p icmp - -      #iptables -N Retiolum -      iptables -A INPUT -j Retiolum -i retiolum -      iptables -A Retiolum -j ACCEPT -m conntrack --ctstate RELATED,ESTABLISHED -      iptables -A Retiolum -j REJECT -p tcp --reject-with tcp-reset -      iptables -A Retiolum -j REJECT -p udp --reject-with icmp-port-unreachable -      iptables -A Retiolum -j REJECT        --reject-with icmp-proto-unreachable -      iptables -A Retiolum -j REJECT -    ''; - -    extraStopCommands = "iptables -F"; +    tables = { +      filter.INPUT.policy = "DROP"; +      filter.FORWARD.policy = "DROP"; +      filter.INPUT.rules = [ +        { predicate = "-i lo"; target = "ACCEPT"; } +        { predicate = "-m conntrack --ctstate RELATED,ESTABLISHED"; target = "ACCEPT"; } +        { predicate = "-p icmp"; target = "ACCEPT"; } +        { predicate = "-p tcp --dport 22"; target = "ACCEPT"; } +      ]; +    };    }; + +  #Networking.firewall = { +  #  enable = true; + +  #  allowedTCPPorts = [ +  #    22 +  #  ]; + +  #  extraCommands = '' +  #    iptables -A INPUT -j ACCEPT -m conntrack --ctstate RELATED,ESTABLISHED +  #    iptables -A INPUT -j ACCEPT -i lo +  #    #http://serverfault.com/questions/84963/why-not-block-icmp +  #    iptables -A INPUT -j ACCEPT -p icmp + +  #    #TODO: fix Retiolum firewall +  #    #iptables -N RETIOLUM +  #    #iptables -A INPUT -j RETIOLUM -i retiolum +  #    #iptables -A RETIOLUM -j ACCEPT -m conntrack --ctstate RELATED,ESTABLISHED +  #    #iptables -A RETIOLUM -j REJECT -p tcp --reject-with tcp-reset +  #    #iptables -A RETIOLUM -j REJECT -p udp --reject-with icmp-port-unreachable +  #    #iptables -A RETIOLUM -j REJECT        --reject-with icmp-proto-unreachable +  #    #iptables -A RETIOLUM -j REJECT +  #  ''; +  #};  } diff --git a/old/modules/lass/desktop-base.nix b/old/modules/lass/desktop-base.nix index 94184548e..ee7a94bc9 100644 --- a/old/modules/lass/desktop-base.nix +++ b/old/modules/lass/desktop-base.nix @@ -1,6 +1,8 @@  { config, pkgs, ... }: -{ +let +  mainUser = config.users.extraUsers.mainUser; +in {    imports = [      ./base.nix    ]; @@ -34,4 +36,30 @@      xlibs.fontschumachermisc    ]; +  fonts.fonts = [ +    pkgs.xlibs.fontschumachermisc +  ]; + +  services.xserver = { +    enable = true; + +    windowManager.xmonad.extraPackages = hspkgs: with hspkgs; [ +      X11-xshape +    ]; +    windowManager.xmonad.enable = true; +    windowManager.xmonad.enableContribAndExtras = true; +    windowManager.default = "xmonad"; +    desktopManager.default = "none"; +    desktopManager.xterm.enable = false; +    displayManager.slim.enable = true; +    displayManager.auto.enable = true; +    displayManager.auto.user = mainUser.name; + +    layout = "us,de"; +    xkbModel = "evdev"; +    xkbVariant = "altgr-intl,nodeadkeys"; +    xkbOptions = "grp:caps_toggle"; + +  }; +  } diff --git a/old/modules/lass/iptables/config.nix b/old/modules/lass/iptables/config.nix new file mode 100644 index 000000000..be521feb9 --- /dev/null +++ b/old/modules/lass/iptables/config.nix @@ -0,0 +1,119 @@ +{ cfg, lib, pkgs, ... }: + +let +  inherit (pkgs) writeScript writeText; +  inherit (lib) concatMapStringsSep concatStringsSep attrNames unique fold any attrValues catAttrs filter flatten length hasAttr; + +#===== new api v4 + +  #buildTable :: iptablesAttrSet` -> str +  #todo: differentiate by iptables-version +  buildTables = iptv: ts: +    let +      declareChain = t: cn: +        #TODO: find out what to do whit these count numbers +        ":${cn} ${t."${cn}".policy} [0:0]"; + +      buildChain = tn: cn: +      #"${concatStringsSep " " ((attrNames t."${cn}") ++ [cn])}"; + +      #TODO: sort by precedence +      #TODO: double check should be unneccessary, refactor! +        if (hasAttr "rules" ts."${tn}"."${cn}") then +          if (ts."${tn}"."${cn}".rules == null) then +            "" +          else +            concatMapStringsSep "\n" (rule: "\n-A ${cn} ${rule}") ([] +              ++ map buildRule ts."${tn}"."${cn}".rules +            ) +        else +          "" +        ; + + +      buildRule = rule: +        #TODO implement rule validation-test here +        # +        #target: +        #target needs to be an existing chain (in the same table) or ACCEPT, REJECT, DROP, LOG, QUEUE, RETURN + +        #predicate: +        #maybe use iptables-test +        #TODO: howto exit with evaluation error by shellscript? +          #apperantly not possible from nix because evalatution wouldn't be deterministic. +        "${rule.predicate} -j ${rule.target}"; + +      buildTable = tn: +        "*${tn}\n" + +        concatStringsSep "\n" ([] +          ++ map (declareChain ts."${tn}") (attrNames ts."${tn}") +        ) + +        #this looks dirty, find a better way to do this (maybe optionalString) +        concatStringsSep "" ([] +          ++ map (buildChain tn) (attrNames ts."${tn}") +        ) + +        "\nCOMMIT"; +    in +      concatStringsSep "\n" ([] +        ++ map buildTable (attrNames ts) +      ); + +#===== + +  rules4 = iptables-version: +    let +      #TODO: find out good defaults. +      tables-defaults = { +        nat.PREROUTING.policy = "ACCEPT"; +        nat.INPUT.policy = "ACCEPT"; +        nat.OUTPUT.policy = "ACCEPT"; +        nat.POSTROUTING.policy = "ACCEPT"; +        filter.INPUT.policy = "ACCEPT"; +        filter.FORWARD.policy = "ACCEPT"; +        filter.OUTPUT.policy = "ACCEPT"; + +        #if someone specifies any other rules on this chain, the default rules get lost. +        #is this wanted beahiviour or a bug? +        #TODO: implement abstraction of rules +        filter.INPUT.rules = [ +          { predicate = "-m conntrack --ctstate RELATED,ESTABLISHED"; target = "ACCEPT"; } +        ]; +      }; +      tables = tables-defaults // cfg.tables; + +    in +      writeText "lass-iptables-rules${toString iptables-version}" '' +        ${buildTables iptables-version tables} +      ''; + +  startScript = writeScript "lass-iptables_start" '' +    #! /bin/sh +    set -euf +    iptables-restore < ${rules4 4} +    ip6tables-restore < ${rules4 6} +  ''; +in + +{ +  networking.firewall.enable = false; + +  systemd.services.lass-iptables = { +    description = "lass-iptables"; +    wantedBy = [ "network-pre.target" ]; +    before = [ "network-pre.target" ]; +    after = [ "systemd-modules-load.service" ]; + +    path = with pkgs; [ +      iptables +    ]; + +    restartIfChanged = true; + +    serviceConfig = { +      Type = "simple"; +      RemainAfterExit = true; +      Restart = "always"; +      ExecStart = "@${startScript} lass-iptables_start"; +    }; +  }; +} diff --git a/old/modules/lass/iptables/default.nix b/old/modules/lass/iptables/default.nix new file mode 100644 index 000000000..7d46d4563 --- /dev/null +++ b/old/modules/lass/iptables/default.nix @@ -0,0 +1,11 @@ +arg@{ config, lib, pkgs, ... }: + +let +  cfg = config.lass.iptables; +  arg' = arg // { inherit cfg; }; +in + +{ +  options.lass.iptables = import ./options.nix arg'; +  config = lib.mkIf cfg.enable (import ./config.nix arg'); +} diff --git a/old/modules/lass/iptables/options.nix b/old/modules/lass/iptables/options.nix new file mode 100644 index 000000000..eb3bfc011 --- /dev/null +++ b/old/modules/lass/iptables/options.nix @@ -0,0 +1,44 @@ +{ lib, ... }: + +let +  inherit (lib) mkEnableOption mkOption types; +in + +{ +  enable = mkEnableOption "iptables"; + +  #tables.filter.INPUT = { +  # policy = "DROP"; +  # rules = [ +  #   { predicate = "-i retiolum"; target = "ACCEPT"; priority = -10; } +  # ]; +  #}; +  #new api +  tables = mkOption { +    type = with types; attrsOf (attrsOf (submodule ({ +      options = { +        policy = mkOption { +          type = str; +          default = "-"; +        }; +        rules = mkOption { +          type = nullOr (listOf (submodule ({ +            options = { +              predicate = mkOption { +                type = str; +              }; +              target = mkOption { +                type = str; +              }; +              precedence = mkOption { +                type = int; +                default = 0; +              }; +            }; +          }))); +          default = null; +        }; +      }; +    }))); +  }; +} diff --git a/old/modules/lass/ircd.nix b/old/modules/lass/ircd.nix index 3c9e25718..c57f7dd5c 100644 --- a/old/modules/lass/ircd.nix +++ b/old/modules/lass/ircd.nix @@ -20,7 +20,7 @@          #ssl_dh_params = "etc/dh.pem";          #ssld_count = 1; -        #default_max_clients = 1024; +        default_max_clients = 10000;          #nicklen = 30;        }; @@ -40,23 +40,28 @@          sslport = 9999;        }; -      auth { -        user = "*@*"; -        class = "users"; -      }; -        class "users" {          ping_time = 2 minutes; -        number_per_ident = 10; -        number_per_ip = 10; -        number_per_ip_global = 50; +        number_per_ident = 200; +        number_per_ip = 200; +        number_per_ip_global = 500;          cidr_ipv4_bitlen = 24;          cidr_ipv6_bitlen = 64; -        number_per_cidr = 200; -        max_number = 3000; +        number_per_cidr = 9000; +        max_number = 10000;          sendq = 400 kbytes;        }; +      exempt { +        ip = "127.0.0.1"; +      }; + +      auth { +        user = "*@*"; +        class = "users"; +        flags = exceed_limit; +      }; +        channel {          use_invex = yes;          use_except = yes; diff --git a/old/modules/lass/retiolum-uriel.nix b/old/modules/lass/retiolum-uriel.nix deleted file mode 100644 index 11dc61c11..000000000 --- a/old/modules/lass/retiolum-uriel.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ config, pkgs, ... }: - -{ -  imports = [ -    ../tv/retiolum.nix -  ]; - -  services.retiolum = { -    enable = true; -    hosts = ../../hosts; -    privateKeyFile = "/etc/nixos/secrets/uriel.retiolum.rsa_key.priv"; -    connectTo = [ -      "fastpoke" -      "gum" -      "ire" -    ]; -  }; - -  networking.firewall.allowedTCPPorts = [ 655 ]; -  networking.firewall.allowedUDPPorts = [ 655 ]; -} diff --git a/old/modules/lass/vim.nix b/old/modules/lass/vim.nix index e1cff0d24..3fe45e1d1 100644 --- a/old/modules/lass/vim.nix +++ b/old/modules/lass/vim.nix @@ -56,6 +56,8 @@ in {        vnoremap < <gv        vnoremap > >gv +      nmap <esc>q :buffer  +        "Tabwidth        set ts=2 sts=2 sw=2 et diff --git a/old/modules/lass/xserver-lass.nix b/old/modules/lass/xserver-lass.nix deleted file mode 100644 index 5c2d169bb..000000000 --- a/old/modules/lass/xserver-lass.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ config, pkgs, ... }: - -let -  mainUser = config.users.extraUsers.mainUser; - -in { -  services.xserver.enable = true; - - -  #fonts.enableFontConfig = true; -  #fonts.enableFontDir = true; -  fonts.fonts = [ -    pkgs.xlibs.fontschumachermisc -  ]; -  #services.xfs.enable = true; -  #services.xserver.useXFS = "unix/:7100"; - -  #services.xserver.displayManager.desktopManagerHandlesLidAndPower = true; - -  #services.xserver.display = 11; -  #services.xserver.tty = 11; -  # services.xserver.layout = "us"; -  # services.xserver.xkbOptions = "eurosign:e"; - -  #services.xserver.multitouch.enable = true; - -  services.xserver.windowManager.xmonad.extraPackages = hspkgs: with hspkgs; [ -    X11-xshape -  ]; -  services.xserver.windowManager.xmonad.enable = true; -  services.xserver.windowManager.xmonad.enableContribAndExtras = true; -  services.xserver.windowManager.default = "xmonad"; -  services.xserver.desktopManager.default = "none"; -  services.xserver.desktopManager.xterm.enable = false; - -  services.xserver.displayManager.slim.enable = true; -  services.xserver.displayManager.auto.enable = true; -  services.xserver.displayManager.auto.user = mainUser.name; -  #services.xserver.displayManager.job.logsXsession = true; - -  services.xserver.vaapiDrivers = [ pkgs.vaapiIntel ]; - -} diff --git a/old/modules/mors/default.nix b/old/modules/mors/default.nix index d83d6abc9..8ba052d60 100644 --- a/old/modules/mors/default.nix +++ b/old/modules/mors/default.nix @@ -5,8 +5,7 @@      ../lass/xresources.nix      ../lass/desktop-base.nix      ../lass/programs.nix -    ../lass/retiolum-mors.nix -    ../lass/xserver-lass.nix +    ./retiolum.nix      ../tv/synaptics.nix      ../lass/bitcoin.nix      ../lass/browsers.nix @@ -31,7 +30,7 @@    nixpkgs = {      url = "https://github.com/Lassulus/nixpkgs"; -    rev = "45c99e522dcc4ef24cf71dbe38d94a308cb30530"; +    rev = "7ef800430789252dac47f0b67e75a6b9bb616397";    };    networking.hostName = "mors"; @@ -110,6 +109,7 @@      SUBSYSTEM=="net", ATTR{address}=="f0:de:f1:0c:a7:63", NAME="et0"    ''; +  #TODO activationScripts seem broken, fix them!    #activationScripts    #split up and move into base    system.activationScripts.powertopTunables = '' @@ -141,10 +141,18 @@      echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.1/power/control'      echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.4/power/control'    ''; -  system.activationScripts.trackpoint = '' -    echo 0 > '/sys/devices/platform/i8042/serio1/serio2/speed' -    echo 220 > '/sys/devices/platform/i8042/serio1/serio2/sensitivity' -  ''; + +  hardware.trackpoint = { +    enable = true; +    sensitivity = 220; +    speed = 0; +    emulateWheel = true; +  }; + +  #system.activationScripts.trackpoint = '' +  #  echo 0 > '/sys/devices/platform/i8042/serio1/serio2/speed' +  #  echo 220 > '/sys/devices/platform/i8042/serio1/serio2/sensitivity' +  #'';    services.xserver = {      videoDriver = "intel"; @@ -201,6 +209,9 @@      ];    }; +  services.mongodb = { +    enable = true; +  };    #services.ircdHybrid = {    #  enable = true; diff --git a/old/modules/mors/git.nix b/old/modules/mors/git.nix index 1dd61d164..375064868 100644 --- a/old/modules/mors/git.nix +++ b/old/modules/mors/git.nix @@ -1,71 +1,130 @@  { config, lib, pkgs, ... }: -{ -  imports = [ -    ../tv/git +let +  inherit (builtins) map readFile; +  inherit (lib) concatMap listToAttrs; +  # TODO lib should already include our stuff +  inherit (import ../../lib { inherit lib pkgs; }) addNames git; + +  x-repos = [ +    (krebs-private "brain") + +    (public "painload") +    (public "shitment") +    (public "wai-middleware-time") +    (public "web-routes-wai-custom") + +    (secret "pass") + +    (tv-lass "emse-drywall") +    (tv-lass "emse-hsdb")    ]; -  services.git = -    let -      inherit (builtins) readFile; -      # TODO lib should already include our stuff -      inherit (import ../../lib { inherit lib pkgs; }) addNames git; +  users = addNames { +    tv = { pubkey = readFile <pubkeys/tv_wu.ssh.pub>; }; +    lass = { pubkey = readFile <pubkeys/lass.ssh.pub>; }; +    uriel = { pubkey = readFile <pubkeys/uriel.ssh.pub>; }; +    makefu = { pubkey = "xxx"; }; +  }; -      krebs-private = name: desc: -          { -            inherit desc; -            hooks = { -              post-receive = git.irc-announce { -                nick = config.networking.hostName; # TODO make this the default -                channel = "#retiolum"; -                server = "ire.retiolum"; -              }; -            }; -          } -    in rec { -      enable = true; +  repos = listToAttrs (map ({ repo, ... }: { name = repo.name; value = repo; }) x-repos); -      users = addNames { -        tv = { pubkey = readFile <pubkeys/tv.ssh.pub>; }; -        lass = { pubkey = readFile <pubkeys/lass.ssh.pub>; }; -        uriel = { pubkey = readFile <pubkeys/lass.ssh.pub>; }; -        makefu = { pubkey = "xxx"; }; -      }; +  rules = concatMap ({ rules, ... }: rules) x-repos; -      repos = addNames { -        shitment = { -          desc = "shitment repository"; -          hooks = { -            post-receive = git.irc-announce { -              nick = config.networking.hostName; # TODO make this the default -              channel = "#retiolum"; -              server = "ire.retiolum"; -            }; +  krebs-private = repo-name: +    rec { +      repo = { +        name = repo-name; +        hooks = { +          post-receive = git.irc-announce { +            nick = config.networking.hostName; # TODO make this the default +            channel = "#retiolum"; +            server = "ire.retiolum";            }; -          public = true;          }; -        testing = { -          desc = "testing repository"; -          hooks = { -            post-receive = git.irc-announce { -              nick = config.networking.hostName; # TODO make this the default -              channel = "#repository"; -              server = "ire.retiolum"; -            }; +      }; +      rules = with git; with users; [ +        { user = lass; +          repo = [ repo ]; +          perm = push "refs/*" [ non-fast-forward create delete merge ]; +        } +        { user = [ tv makefu uriel ]; +          repo = [ repo ]; +          perm = fetch; +        } +      ]; +    }; + +  public = repo-name: +    rec { +      repo = { +        name = repo-name; +        hooks = { +          post-receive = git.irc-announce { +            nick = config.networking.hostName; # TODO make this the default +            channel = "#retiolum"; +            server = "ire.retiolum";            }; -          public = true;          }; +        public = true; +      }; +      rules = with git; with users; [ +        { user = lass; +          repo = [ repo ]; +          perm = push "refs/*" [ non-fast-forward create delete merge ]; +        } +        { user = [ tv makefu uriel ]; +          repo = [ repo ]; +          perm = fetch; +        } +      ]; +    }; + +  secret = repo-name: +    rec { +      repo = { +        name = repo-name; +        hooks = {};        }; +      rules = with git; with users; [ +        { user = lass; +          repo = [ repo ]; +          perm = push "refs/*" [ non-fast-forward create delete merge ]; +        } +        { user = [ uriel ]; +          repo = [ repo ]; +          perm = fetch; +        } +      ]; +    }; -      rules = with git; with users; with repos; [ +  tv-lass = repo-name: +    rec { +      repo = { +        name = repo-name; +        hooks = {}; +      }; +      rules = with git; with users; [          { user = lass; -          repo = [ testing shitment ]; -          perm = push master [ non-fast-forward create delete merge ]; +          repo = [ repo ]; +          perm = push "refs/*" [ non-fast-forward create delete merge ];          } -        { user = [ tv uriel makefu ]; -          repo = [ testing shitment ]; +        { user = [ tv ]; +          repo = [ repo ];            perm = fetch;          }        ];      }; + +in + +{ +  imports = [ +    ../tv/git +  ]; + +  tv.git = { +    enable = true; +    inherit repos rules users; +  };  } diff --git a/old/modules/mors/paths.nix b/old/modules/mors/paths.nix new file mode 100644 index 000000000..153356a7e --- /dev/null +++ b/old/modules/mors/paths.nix @@ -0,0 +1,12 @@ +{ +  lib.file.url = ../../lib; +  modules.file.url = ../../modules; +  nixpkgs.git = { +    url = https://github.com/Lassulus/nixpkgs; +    rev = "7ef800430789252dac47f0b67e75a6b9bb616397"; +    cache = ../../tmp/git-cache; +  }; +  pubkeys.file.url = ../../pubkeys; +  retiolum-hosts.file.url = ../../hosts; +  secrets.file.url = ../../secrets; +} diff --git a/old/modules/mors/repos.nix b/old/modules/mors/repos.nix index e31ba9481..1f7f33456 100644 --- a/old/modules/mors/repos.nix +++ b/old/modules/mors/repos.nix @@ -35,6 +35,15 @@          extraConfig = "option hook.post-receive = irc-announce";        }; +      emse-drywall = { +        users = { +          lass = "RW+"; +          uriel = "R"; +          tv = "R"; +        }; +        extraConfig = "option hook.post-receive = irc-announce"; +      }; +        emse-hsdb = {          users = {            lass = "RW+"; diff --git a/old/modules/lass/retiolum-mors.nix b/old/modules/mors/retiolum.nix index 61a7856c1..1148bee9c 100644 --- a/old/modules/lass/retiolum-mors.nix +++ b/old/modules/mors/retiolum.nix @@ -2,12 +2,12 @@  {    imports = [ -    ../tv/retiolum.nix +    ../tv/retiolum    ]; -  services.retiolum = { +  tv.retiolum = {      enable = true; -    hosts = ../../hosts; +    hosts = <retiolum-hosts>;      privateKeyFile = "/etc/nixos/secrets/mors.retiolum.rsa_key.priv";      connectTo = [        "fastpoke" diff --git a/old/modules/uriel/default.nix b/old/modules/uriel/default.nix index 7f2b9032b..eb0f3e906 100644 --- a/old/modules/uriel/default.nix +++ b/old/modules/uriel/default.nix @@ -3,8 +3,7 @@  {    imports = [      ../lass/desktop-base.nix -    ../lass/retiolum-uriel.nix -    ../lass/xserver-lass.nix +    ./retiolum.nix      ../lass/browsers.nix      ../lass/programs.nix      ../lass/games.nix @@ -18,11 +17,12 @@      ../lass/bird.nix      ./repos.nix      ../lass/chromium-patched.nix +    ./git.nix    ];    nixpkgs = {      url = "https://github.com/Lassulus/nixpkgs"; -    rev = "45c99e522dcc4ef24cf71dbe38d94a308cb30530"; +    rev = "7ef800430789252dac47f0b67e75a6b9bb616397";    };    networking.hostName = "uriel"; @@ -106,6 +106,10 @@    environment.systemPackages = with pkgs; [    ]; +  #for google hangout + +  users.extraUsers.google.extraGroups = [ "audio" "video" ]; +    #users.extraGroups = {    #  loot = { diff --git a/old/modules/uriel/git.nix b/old/modules/uriel/git.nix new file mode 100644 index 000000000..375064868 --- /dev/null +++ b/old/modules/uriel/git.nix @@ -0,0 +1,130 @@ +{ config, lib, pkgs, ... }: + +let +  inherit (builtins) map readFile; +  inherit (lib) concatMap listToAttrs; +  # TODO lib should already include our stuff +  inherit (import ../../lib { inherit lib pkgs; }) addNames git; + +  x-repos = [ +    (krebs-private "brain") + +    (public "painload") +    (public "shitment") +    (public "wai-middleware-time") +    (public "web-routes-wai-custom") + +    (secret "pass") + +    (tv-lass "emse-drywall") +    (tv-lass "emse-hsdb") +  ]; + +  users = addNames { +    tv = { pubkey = readFile <pubkeys/tv_wu.ssh.pub>; }; +    lass = { pubkey = readFile <pubkeys/lass.ssh.pub>; }; +    uriel = { pubkey = readFile <pubkeys/uriel.ssh.pub>; }; +    makefu = { pubkey = "xxx"; }; +  }; + +  repos = listToAttrs (map ({ repo, ... }: { name = repo.name; value = repo; }) x-repos); + +  rules = concatMap ({ rules, ... }: rules) x-repos; + +  krebs-private = repo-name: +    rec { +      repo = { +        name = repo-name; +        hooks = { +          post-receive = git.irc-announce { +            nick = config.networking.hostName; # TODO make this the default +            channel = "#retiolum"; +            server = "ire.retiolum"; +          }; +        }; +      }; +      rules = with git; with users; [ +        { user = lass; +          repo = [ repo ]; +          perm = push "refs/*" [ non-fast-forward create delete merge ]; +        } +        { user = [ tv makefu uriel ]; +          repo = [ repo ]; +          perm = fetch; +        } +      ]; +    }; + +  public = repo-name: +    rec { +      repo = { +        name = repo-name; +        hooks = { +          post-receive = git.irc-announce { +            nick = config.networking.hostName; # TODO make this the default +            channel = "#retiolum"; +            server = "ire.retiolum"; +          }; +        }; +        public = true; +      }; +      rules = with git; with users; [ +        { user = lass; +          repo = [ repo ]; +          perm = push "refs/*" [ non-fast-forward create delete merge ]; +        } +        { user = [ tv makefu uriel ]; +          repo = [ repo ]; +          perm = fetch; +        } +      ]; +    }; + +  secret = repo-name: +    rec { +      repo = { +        name = repo-name; +        hooks = {}; +      }; +      rules = with git; with users; [ +        { user = lass; +          repo = [ repo ]; +          perm = push "refs/*" [ non-fast-forward create delete merge ]; +        } +        { user = [ uriel ]; +          repo = [ repo ]; +          perm = fetch; +        } +      ]; +    }; + +  tv-lass = repo-name: +    rec { +      repo = { | 
