makefu:rename to user-toplevel structure
This commit is contained in:
commit
4f97a86316
47
1systems/pnp.nix
Normal file
47
1systems/pnp.nix
Normal file
|
@ -0,0 +1,47 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
<nixpkgs/nixos/modules/profiles/qemu-guest.nix>
|
||||
../../2configs/makefu/base.nix
|
||||
../../2configs/makefu/cgit-retiolum.nix
|
||||
];
|
||||
krebs.build.host = config.krebs.hosts.pnp;
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.version = 2;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
|
||||
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "ehci_pci" "virtio_pci" "virtio_blk" ];
|
||||
boot.kernelModules = [ ];
|
||||
boot.extraModulePackages = [ ];
|
||||
hardware.enableAllFirmware = true;
|
||||
hardware.cpu.amd.updateMicrocode = true;
|
||||
|
||||
# networking.firewall is enabled by default
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-label/nixos";
|
||||
fsType = "ext4";
|
||||
};
|
||||
krebs.retiolum = {
|
||||
enable = true;
|
||||
hosts = ../../Zhosts;
|
||||
connectTo = [
|
||||
"gum"
|
||||
"pigstarter"
|
||||
"fastpoke"
|
||||
];
|
||||
};
|
||||
|
||||
# $ nix-env -qaP | grep wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
jq
|
||||
];
|
||||
}
|
99
2configs/base.nix
Normal file
99
2configs/base.nix
Normal file
|
@ -0,0 +1,99 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
{
|
||||
imports = [ ];
|
||||
krebs.enable = true;
|
||||
krebs.search-domain = "retiolum";
|
||||
|
||||
networking.hostName = config.krebs.build.host.name;
|
||||
users.extraUsers = {
|
||||
root = {
|
||||
openssh.authorizedKeys.keys = [ config.krebs.users.makefu.pubkey ];
|
||||
};
|
||||
makefu = {
|
||||
uid = 9001;
|
||||
group = "users";
|
||||
home = "/home/makefu";
|
||||
createHome = true;
|
||||
useDefaultShell = true;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
];
|
||||
openssh.authorizedKeys.keys = [ config.krebs.users.makefu.pubkey ];
|
||||
};
|
||||
};
|
||||
|
||||
services.openssh.enable = true;
|
||||
nix.useChroot = true;
|
||||
|
||||
users.mutableUsers = true;
|
||||
|
||||
boot.tmpOnTmpfs = true;
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /tmp 1777 root root - -"
|
||||
];
|
||||
|
||||
environment.extraInit = ''
|
||||
EDITOR=vim
|
||||
'';
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
git
|
||||
vim
|
||||
gnumake
|
||||
rxvt_unicode.terminfo
|
||||
];
|
||||
|
||||
programs.bash = {
|
||||
enableCompletion = true;
|
||||
interactiveShellInit = ''
|
||||
HISTCONTROL='erasedups:ignorespace'
|
||||
HISTSIZE=900001
|
||||
HISTFILESIZE=$HISTSIZE
|
||||
|
||||
shopt -s checkhash
|
||||
shopt -s histappend histreedit histverify
|
||||
shopt -s no_empty_cmd_completion
|
||||
complete -d cd
|
||||
'';
|
||||
|
||||
promptInit = ''
|
||||
case $UID in
|
||||
0) PS1='\[\e[1;31m\]\w\[\e[0m\] ' ;;
|
||||
9001) PS1='\[\e[1;32m\]\w\[\e[0m\] ' ;;
|
||||
*) PS1='\[\e[1;35m\]\u \[\e[1;32m\]\w\[\e[0m\] ' ;;
|
||||
esac
|
||||
if test -n "$SSH_CLIENT"; then
|
||||
PS1='\[\033[35m\]\h'" $PS1"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
environment.shellAliases = {
|
||||
lsl = "ls -lAtr";
|
||||
};
|
||||
|
||||
nixpkgs.config.packageOverrides = pkgs: {
|
||||
nano = pkgs.runCommand "empty" {} "mkdir -p $out";
|
||||
};
|
||||
|
||||
services.cron.enable = false;
|
||||
services.nscd.enable = false;
|
||||
|
||||
security.setuidPrograms = [ "sendmail" ];
|
||||
services.journald.extraConfig = ''
|
||||
SystemMaxUse=1G
|
||||
RuntimeMaxUse=128M
|
||||
'';
|
||||
# Enable IPv6 Privacy Extensions
|
||||
boot.kernel.sysctl = {
|
||||
"net.ipv6.conf.all.use_tempaddr" = 2;
|
||||
"net.ipv6.conf.default.use_tempaddr" = 2;
|
||||
};
|
||||
|
||||
i18n = {
|
||||
consoleKeyMap = "us";
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
};
|
||||
}
|
70
2configs/cgit-retiolum.nix
Normal file
70
2configs/cgit-retiolum.nix
Normal file
|
@ -0,0 +1,70 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
# TODO: remove tv lib :)
|
||||
with import ../../4lib/tv { inherit lib pkgs; };
|
||||
let
|
||||
|
||||
out = {
|
||||
imports = [ ../../3modules/krebs/git.nix ];
|
||||
krebs.git = {
|
||||
enable = true;
|
||||
root-title = "public repositories ";
|
||||
root-desc = "keep on krebsing";
|
||||
inherit repos rules;
|
||||
};
|
||||
};
|
||||
repos = priv-repos // krebs-repos ;
|
||||
rules = concatMap krebs-rules (attrValues krebs-repos) ++ concatMap priv-rules (attrValues priv-repos);
|
||||
|
||||
krebs-repos = mapAttrs make-krebs-repo {
|
||||
stockholm = {
|
||||
desc = "take all the computers hostage, they'll love you!";
|
||||
};
|
||||
};
|
||||
|
||||
priv-repos = mapAttrs make-priv-repo {
|
||||
autosync = { };
|
||||
};
|
||||
|
||||
|
||||
# TODO move users to separate module
|
||||
make-priv-repo = name: { desc ? null, ... }: {
|
||||
inherit name desc;
|
||||
public = false;
|
||||
};
|
||||
|
||||
make-krebs-repo = with git; name: { desc ? null, ... }: {
|
||||
inherit name desc;
|
||||
public = true;
|
||||
hooks = {
|
||||
post-receive = git.irc-announce {
|
||||
nick = config.networking.hostName;
|
||||
channel = "#retiolum";
|
||||
server = "cd.retiolum";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
set-owners = with git; repo: user:
|
||||
singleton {
|
||||
inherit user;
|
||||
repo = [ repo ];
|
||||
perm = push "refs/*" [ non-fast-forward create delete merge ];
|
||||
};
|
||||
|
||||
set-ro-access = with git; repo: user:
|
||||
optional repo.public {
|
||||
inherit user;
|
||||
repo = [ repo ];
|
||||
perm = fetch;
|
||||
};
|
||||
|
||||
# TODO: get the list of all krebsministers
|
||||
krebsminister = with config.krebs.users; [ lass tv uriel ];
|
||||
|
||||
priv-rules = with config.krebs.users; repo:
|
||||
set-owners repo [ makefu ];
|
||||
|
||||
krebs-rules = with config.krebs.users; repo:
|
||||
set-owners repo [ makefu ] ++ set-ro-access repo krebsminister ;
|
||||
|
||||
in out
|
19
3modules/default.nix
Normal file
19
3modules/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with import ../../4lib/krebs { inherit lib; };
|
||||
let
|
||||
cfg = config.krebs;
|
||||
|
||||
out = {
|
||||
imports = [
|
||||
];
|
||||
options.krebs = api;
|
||||
config = mkIf cfg.enable imp;
|
||||
};
|
||||
|
||||
api = { };
|
||||
|
||||
imp = { };
|
||||
|
||||
in
|
||||
out
|
Loading…
Reference in a new issue