Merge remote-tracking branch 'lass/staging/18.03' into staging
This commit is contained in:
commit
3ed84b0b8c
17
default.nix
17
default.nix
@ -3,3 +3,20 @@ import <nixpkgs/nixos/lib/eval-config.nix> {
|
||||
(import <nixpkgs/nixos/lib/from-env.nix> "NIXOS_CONFIG" <nixos-config>)
|
||||
];
|
||||
}
|
||||
//
|
||||
{
|
||||
lib = import ./lib;
|
||||
systems = with import ./lib; let
|
||||
ns = getEnv "LOGNAME";
|
||||
in
|
||||
genAttrs
|
||||
(attrNames (filterAttrs (_: eq "directory") (readDir (<stockholm> + "/${ns}/1systems"))))
|
||||
(name: let
|
||||
config = import (<stockholm> + "/${ns}/1systems/${name}/config.nix");
|
||||
source = import (<stockholm> + "/${ns}/1systems/${name}/source.nix");
|
||||
in import <nixpkgs/nixos/lib/eval-config.nix> {
|
||||
modules = [ config ];
|
||||
} // {
|
||||
inherit source;
|
||||
});
|
||||
}
|
||||
|
@ -1,42 +1,19 @@
|
||||
# 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, lib, pkgs, ... }:
|
||||
# bln config file
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
<stockholm/jeschli>
|
||||
[ <stockholm/jeschli>
|
||||
<stockholm/jeschli/2configs/virtualbox.nix>
|
||||
<stockholm/jeschli/2configs/urxvt.nix>
|
||||
<stockholm/jeschli/2configs/emacs.nix>
|
||||
./hardware-configuration.nix
|
||||
# ./dcso-vpn.nix
|
||||
];
|
||||
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
jeschliFontSize = 20;
|
||||
# Use the GRUB 2 boot loader.
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.version = 2;
|
||||
# boot.loader.grub.efiSupport = true;
|
||||
# boot.loader.grub.efiInstallAsRemovable = true;
|
||||
# boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||||
# Define on which hard drive you want to install Grub.
|
||||
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only
|
||||
boot.loader.grub.extraEntries = ''
|
||||
menuentry "Debian GNU/Linux, kernel 4.9.0-4-amd64" {
|
||||
search --set=drive1 --fs-uuid f169fd32-bf96-4da0-bc34-294249ffa606
|
||||
linux ($drive1)/vmlinuz-4.9.0-4-amd64 root=/dev/mapper/pool-debian ro
|
||||
initrd ($drive1)/initrd.img-4.9.0-4-amd64
|
||||
}
|
||||
'';
|
||||
boot.initrd.luks.devices = [
|
||||
{
|
||||
name = "root";
|
||||
device = "/dev/disk/by-uuid/cba5d550-c3c8-423e-a913-14b5210bdd32";
|
||||
preLVM = true;
|
||||
allowDiscards = true;
|
||||
}
|
||||
];
|
||||
|
||||
environment.shellAliases = {
|
||||
n = "nix-shell";
|
||||
gd = "cd /home/markus/go/src/gitlab.dcso.lolcat";
|
||||
@ -46,23 +23,13 @@
|
||||
LOGNAME=jeschli exec nix-shell -I stockholm="$PWD" --run 'deploy --system="bln"'
|
||||
'';
|
||||
};
|
||||
networking.hostName = lib.mkForce "BLN02NB0154"; # Define your hostname.
|
||||
networking.hostName = lib.mkForce "BLN02NB0232";
|
||||
networking.networkmanager.enable = true;
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
|
||||
# Select internationalisation properties.
|
||||
# i18n = {
|
||||
# consoleFont = "Lat2-Terminus16";
|
||||
# consoleKeyMap = "us";
|
||||
# defaultLocale = "en_US.UTF-8";
|
||||
# };
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
|
||||
# List packages installed in system profile. To search by name, run:
|
||||
# $ nix-env -qaP | grep wget
|
||||
# Setup Packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
environment.variables = { GOROOT= [ "${pkgs.go.out}/share/go" ]; };
|
||||
environment.systemPackages = with pkgs; [
|
||||
@ -114,66 +81,32 @@
|
||||
];
|
||||
|
||||
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
programs.bash.enableCompletion = true;
|
||||
programs.vim.defaultEditor = true;
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = { enable = true; enableSSHSupport = true; };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
services.printing.drivers = [ pkgs.postscript-lexmark ];
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
# services.xserver.xrandrHeads = [
|
||||
# { output = "eDP1"; }
|
||||
# { output = "DP-2-2-8"; primary = true; }
|
||||
# { output = "DP-2-1-8"; monitorConfig = ''Option "Rotate" "left"''; }
|
||||
# ];
|
||||
# services.xserver.layout = "us";
|
||||
# services.xserver.xkbOptions = "eurosign:e";
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
|
||||
# Enable touchpad support.
|
||||
# services.xserver.libinput.enable = true;
|
||||
|
||||
# Enable the KDE Desktop Environment.
|
||||
# services.xserver.displayManager.lightdm.enable = true;
|
||||
services.xserver.windowManager.xmonad.enable = true;
|
||||
services.xserver.windowManager.xmonad.enableContribAndExtras = true;
|
||||
# services.xserver.desktopManager.gnome3.enable = true;
|
||||
# services.xserver.displayManager.gdm.enable = true;
|
||||
services.xserver.displayManager.sddm.enable = true;
|
||||
#services.xserver.desktopManager.plasma5.enable = true;
|
||||
# services.xserver.displayManager.sessionCommands = ''
|
||||
# (sleep 1 && ${pkgs.xorg.xrandr}/bin/xrandr --output VIRTUAL1 --off --output eDP1 --mode 1920x1080 --pos 5120x688 --rotate normal --output DP1 --off --output DP2-1 --mode 2560x1440 --pos 2560x328 --rotate normal --output DP2-2 --primary --mode 2560x1440 --pos 0x328 --rotate normal --output DP2-3 --off --output HDMI2 --off --output HDMI1 --off --output DP2 --off
|
||||
#'';
|
||||
services.xserver.dpi = 100;
|
||||
fonts.fontconfig.dpi = 100;
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.extraUsers.markus = {
|
||||
users.extraUsers.jeschli = {
|
||||
isNormalUser = true;
|
||||
extraGroups = ["docker"];
|
||||
extraGroups = ["docker" "vboxusers"];
|
||||
uid = 1000;
|
||||
};
|
||||
|
||||
# This value determines the NixOS release with which your system is to be
|
||||
# compatible, in order to avoid breaking some software such as database
|
||||
# servers. You should change this only after NixOS release notes say you
|
||||
# should.
|
||||
system.stateVersion = "17.09"; # Did you read the comment?
|
||||
|
||||
system.stateVersion = "17.09";
|
||||
# Gogland Debugger workaround
|
||||
# nixpkgs.config.packageOverrides = super: {
|
||||
# idea.gogland = lib.overrideDerivation super.idea.gogland (attrs: {
|
||||
@ -185,8 +118,7 @@
|
||||
# });
|
||||
# };
|
||||
|
||||
# virtualisation.docker.enable = true;
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
|
||||
# DCSO Certificates
|
||||
security.pki.certificateFiles = [
|
||||
|
@ -1,6 +1,3 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
@ -8,27 +5,29 @@
|
||||
[ <nixpkgs/nixos/modules/installer/scan/not-detected.nix>
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sr_mod" "rtsx_pci_sdmmc" ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
boot.initrd.luks.devices.crypted.device = "/dev/disk/by-uuid/25534522-5748-4dcc-a5ca-80a3ac70f59d";
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/02144ea4-947d-440e-bbf9-99cab0dccf05";
|
||||
{ device = "/dev/disk/by-uuid/496c8889-96db-446d-9bac-60d4347faeac";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/home" =
|
||||
{ device = "/dev/disk/by-uuid/2785adf5-a99e-49d7-86d6-99f393f457ea";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/f169fd32-bf96-4da0-bc34-294249ffa606";
|
||||
fsType = "ext2";
|
||||
};
|
||||
|
||||
fileSystems."/home" =
|
||||
{ device = "/dev/disk/by-uuid/68ef2163-7b3d-4dbb-add9-d3543ad7c738";
|
||||
fsType = "ext4";
|
||||
{ device = "/dev/disk/by-uuid/927E-01A0";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
nix.maxJobs = lib.mkDefault 4;
|
||||
nix.maxJobs = lib.mkDefault 8;
|
||||
powerManagement.cpuFreqGovernor = "powersave";
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
./hardware-configuration.nix
|
||||
<stockholm/jeschli>
|
||||
<stockholm/jeschli/2configs/urxvt.nix>
|
||||
<stockholm/jeschli/2configs/emacs.nix>
|
||||
];
|
||||
|
||||
krebs.build.host = config.krebs.hosts.bolide;
|
||||
|
@ -5,6 +5,7 @@
|
||||
<stockholm/jeschli>
|
||||
./hardware-configuration.nix
|
||||
<stockholm/jeschli/2configs/urxvt.nix>
|
||||
<stockholm/jeschli/2configs/emacs.nix>
|
||||
];
|
||||
|
||||
krebs.build.host = config.krebs.hosts.brauerei;
|
||||
|
77
jeschli/2configs/emacs.nix
Normal file
77
jeschli/2configs/emacs.nix
Normal file
@ -0,0 +1,77 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
packageRepos = ''
|
||||
(require 'package) ;; You might already have this line
|
||||
(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos))
|
||||
(not (gnutls-available-p))))
|
||||
(url (concat (if no-ssl "http" "https") "://melpa.org/packages/")))
|
||||
(add-to-list 'package-archives (cons "melpa" url) t)
|
||||
(add-to-list 'package-archives
|
||||
'("org" . "http://orgmode.org/elpa/") t)
|
||||
)
|
||||
(when (< emacs-major-version 24)
|
||||
;; For important compatibility libraries like cl-lib
|
||||
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
|
||||
(package-initialize)
|
||||
'';
|
||||
evilMode = ''
|
||||
;; Evil Mode
|
||||
(add-to-list 'load-path "~/.emacs.d/evil")
|
||||
(require 'evil)
|
||||
(evil-mode 1)
|
||||
(require 'evil-org)
|
||||
(add-hook 'org-mode-hook 'evil-org-mode)
|
||||
(evil-org-set-key-theme '(navigation insert textobjects additional calendar))
|
||||
(require 'evil-org-agenda)
|
||||
(evil-org-agenda-set-keys)
|
||||
'';
|
||||
windowCosmetics = ''
|
||||
(tool-bar-mode -1) ; Disable the button bar atop screen
|
||||
(scroll-bar-mode -1) ; Disable scroll bar
|
||||
(setq inhibit-startup-screen t) ; Disable startup screen with graphics
|
||||
(setq-default indent-tabs-mode nil) ; Use spaces instead of tabs
|
||||
(setq tab-width 2) ; Four spaces is a tab
|
||||
(setq visible-bell nil) ; Disable annoying visual bell graphic
|
||||
(setq ring-bell-function 'ignore) ; Disable super annoying audio bell
|
||||
'';
|
||||
orgMode = ''
|
||||
(add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode))
|
||||
(global-set-key "\C-cl" 'org-store-link)
|
||||
(global-set-key "\C-ca" 'org-agenda)
|
||||
(global-set-key "\C-cb" 'org-iswitchb)
|
||||
(if (boundp 'org-user-agenda-files)
|
||||
(setq org-agenda-files org-user-agenda-files)
|
||||
(setq org-agenda-files (quote ("~/projects/notes")))
|
||||
)
|
||||
'';
|
||||
emacsFile = ''
|
||||
${packageRepos}
|
||||
${windowCosmetics}
|
||||
(custom-set-variables
|
||||
;; custom-set-variables was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
'(inhibit-startup-screen t)
|
||||
'(org-agenda-files nil)
|
||||
'(package-selected-packages
|
||||
(quote
|
||||
(smex ox-jira org-plus-contrib org-mime org-jira neotree molokai-theme let-alist helm-fuzzy-find go-guru go-autocomplete flymake-go exec-path-from-shell evil-org cl-lib-highlight bbdb atom-one-dark-theme))))
|
||||
${orgMode}
|
||||
'';
|
||||
dotEmacs = pkgs.writeText "dot-emacs" emacsFile;
|
||||
emacs = (pkgs.emacsPackagesNgGen pkgs.emacs).emacsWithPackages (epkgs: [
|
||||
epkgs.melpaStablePackages.magit
|
||||
epkgs.melpaPackages.mmm-mode
|
||||
epkgs.melpaPackages.nix-mode
|
||||
epkgs.melpaPackages.go-mode
|
||||
]);
|
||||
myEmacs = pkgs.writeDashBin "my-emacs" ''
|
||||
exec ${emacs}/bin/emacs -q -l ${dotEmacs} "$@"
|
||||
'';
|
||||
in {
|
||||
environment.systemPackages = [
|
||||
myEmacs
|
||||
];
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
mainUser = config.users.extraUsers.markus;
|
||||
mainUser = config.users.extraUsers.jeschli;
|
||||
|
||||
in {
|
||||
#services.virtualboxHost.enable = true;
|
||||
|
@ -13,10 +13,7 @@ in
|
||||
evalSource (toString _file) [
|
||||
{
|
||||
nixos-config.symlink = "stockholm/jeschli/1systems/${name}/config.nix";
|
||||
nixpkgs.git = {
|
||||
url = https://github.com/nixos/nixpkgs;
|
||||
ref = "0653b73";
|
||||
};
|
||||
nixpkgs = (import <stockholm/krebs/source.nix> host).nixpkgs;
|
||||
secrets.file = getAttr builder {
|
||||
buildbot = toString <stockholm/jeschli/2configs/tests/dummy-secrets>;
|
||||
jeschli = "${getEnv "HOME"}/secrets/${name}";
|
||||
|
@ -5,6 +5,5 @@ with import <stockholm/lib>;
|
||||
krebs.ci.enable = true;
|
||||
krebs.ci.treeStableTimer = 1;
|
||||
krebs.ci.hosts = filter (getAttr "ci") (attrValues config.krebs.hosts);
|
||||
krebs.ci.tests = [ "deploy" ];
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ with import <stockholm/lib>;
|
||||
60 IN NS ns16.ovh.net.
|
||||
60 IN NS dns16.ovh.net.
|
||||
60 IN A ${config.krebs.hosts.prism.nets.internet.ip4.addr}
|
||||
60 IN TXT v=spf1 mx -all
|
||||
60 IN TXT v=spf1 mx a:lassul.us -all
|
||||
cgit 60 IN A ${config.krebs.hosts.prism.nets.internet.ip4.addr}
|
||||
io 60 IN NS ions.lassul.us.
|
||||
ions 60 IN A ${config.krebs.hosts.prism.nets.internet.ip4.addr}
|
||||
@ -618,6 +618,47 @@ with import <stockholm/lib>;
|
||||
ssh.privkey.path = <secrets/ssh.id_ed25519>;
|
||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE5HyLyaIvVH0qHIQ4ciKhDiElhSqsK+uXcA6lTvL+5n";
|
||||
};
|
||||
cabal = {
|
||||
cores = 2;
|
||||
nets = rec {
|
||||
retiolum = {
|
||||
ip4.addr = "10.243.1.4";
|
||||
ip6.addr = "42::1:4";
|
||||
aliases = [
|
||||
"cabal.r"
|
||||
];
|
||||
tinc.pubkey = ''
|
||||
-----BEGIN RSA PUBLIC KEY-----
|
||||
MIIECgKCBAEAukXm8xPpC6/F+wssYqQbqt1QDwsPrF3TJ9ToLFcN1WgDlhDhjM3A
|
||||
SuRDMNjRT1fvVTuXyplH5g16eokW/yLOpNnznMS3/VR372pLPEOqfuRf7wAy18jj
|
||||
rZkW3EO7nyZ8KMb+SXA8Q0KIpHY50Ezh+tqGoTZDICwoK6N5dKLgAZShS55JXwwK
|
||||
qRG3vyzV3mDjgVyT0FNfyL1/BN1qvJ+tQQ40lEbkcQauMunMzNbH058kAd6H2/0e
|
||||
LK4JkxI9XpZHE6Pf1epXyClHW7vT7APFRp9gL9tZS/XMC18+aEMFfQrNW9jb3FIq
|
||||
rU5MfJ7aubboe7dT6CRaRSWpduiKLVzY/JCoGvUziyvmR7qHsQWTEjtNuQX9joc3
|
||||
6iq1o+gmLV0G8Xwq8cEcg5USlLxNsGBQPwYnTG6iTPPHqOv7BKucekE/opnVZseE
|
||||
fSNCGl1+tGwa3soSMI97LkpQTZxdeqf+jWZve0RbSa2Ihyod91ldFCqi1+PZx68v
|
||||
yBI0PJamlt+dBx6WQKbPngWYeD8hXo7tg0XVRVa3ZQyX+Mq6uCCb2GM8ewMUPl+A
|
||||
kcY1osFt6+sdkFGdiv3FMyijAiZumPoPprXC/4SGIsMnkoI4JfSAbTpHi2QuesqR
|
||||
KMeairdB7XGUYlMvWpDLKN2dbMdRc+l3kDUKT7hALjKeyWS/27WYeK/STxvZXEXi
|
||||
TZGHopvOFv6wcrb6nI49vIJo5mDLFamAPN3ZjeR20wP95UP7cUUSaTYX49M4lX6U
|
||||
oL5BaFrcLn2PTvS84pUxcXKAp70FgTpvGJbaWwETgDjW+H+qlGmI/BTejpL7flVs
|
||||
TOtaP/uCMxhVZSFv9bzo0ih10o+4gtU8lqxfJsVxlf2K7LVZ++LQba/u+XxRY+xw
|
||||
3IFBfg34tnO6zYlV8XgAiJ6IUOHUZANsuBD4iMoFSVOig6t5eIOkgXR6GEkP8FBD
|
||||
rkroRMmxcu4lTCOzWIuAVOxCd4XXguoGQ4HAzpGd5ccdcb8Ev4RYEvNJY7B5tIQZ
|
||||
4J0F9ECzJuSu1HvWTL+T6a36d2MDTkXU2IJ2tSHciXqiP+QMMF7p9Ux0tiAq4mtf
|
||||
luA94uKWg3cSyTyEM/jF66CgO6Ts3AivNE0MRNupV6AbUdr+TjzotGn9rxi168py
|
||||
w/49OVbpR9EIGC2wxx7qcSEk5chFOcgvNQMRqgIx51bbOL7JYb0f4XuA38GUqLkG
|
||||
09PXmPeyqGzR9HsV2XZDprZdD3Dy4ojdexw0+YILg9bHaAxLHYs6WFZvzfaLLsf1
|
||||
K2I39vvrEEOy8tHi4jvMk7oVX6RWG+DOZMeXTvyUCaBHyYkA0eDlC6NeKOHxnW/g
|
||||
ZtN1W93UdklEqc5okM0/ZIke1HDRt3ZLdQIDAQAB
|
||||
-----END RSA PUBLIC KEY-----
|
||||
'';
|
||||
};
|
||||
};
|
||||
secure = true;
|
||||
ssh.privkey.path = <secrets/ssh.id_ed25519>;
|
||||
ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPsTeSAedrbp7/KmZX8Mvka702fIUy77Mvqo9HwzCbym";
|
||||
};
|
||||
};
|
||||
users = {
|
||||
lass = {
|
||||
|
@ -1,8 +1,11 @@
|
||||
{ config, ... }:
|
||||
with import <stockholm/lib>;
|
||||
let
|
||||
nixos-version-id = "${config.system.nixosVersion}";
|
||||
nixos-version = "${nixos-version-id} (${config.system.nixosCodeName})";
|
||||
nixos-version-id = if (hasAttr "nixos" config.system) then
|
||||
"${config.system.nixos.version}" else "${config.system.nixosVersion}";
|
||||
nixos-codeName = if (hasAttr "nixos" config.system) then
|
||||
"${config.system.nixos.codeName}" else "${config.system.nixosCodeName}";
|
||||
nixos-version = "${nixos-version-id} (${nixos-codeName})";
|
||||
nixos-pretty-name = "NixOS ${nixos-version}";
|
||||
|
||||
stockholm-version-id = let
|
||||
|
@ -1,25 +0,0 @@
|
||||
{ mkDerivation, attoparsec, base, containers, Diff, fetchgit, mtl
|
||||
, nix-derivation, optparse-generic, stdenv, system-filepath, text
|
||||
, unix, vector
|
||||
}:
|
||||
mkDerivation {
|
||||
pname = "nix-diff";
|
||||
version = "1.0.0-krebs1";
|
||||
src = fetchgit {
|
||||
url = "https://github.com/Gabriel439/nix-diff";
|
||||
sha256 = "1k00nx8pannqmpzadkwfrs6bf79yk22ynhd033z5rsyw0m8fcz9k";
|
||||
rev = "e32ffa2c7f38b47a71325a042c1d887fb46cdf7d";
|
||||
};
|
||||
patches = [
|
||||
./nixos-system.patch
|
||||
];
|
||||
isLibrary = false;
|
||||
isExecutable = true;
|
||||
executableHaskellDepends = [
|
||||
attoparsec base containers Diff mtl nix-derivation optparse-generic
|
||||
system-filepath text unix vector
|
||||
];
|
||||
homepage = "https://github.com/Gabriel439/nix-diff";
|
||||
description = "Explain why two Nix derivations differ";
|
||||
license = stdenv.lib.licenses.bsd3;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
diff --git a/src/Main.hs b/src/Main.hs
|
||||
index 959ab8e..d3b6077 100644
|
||||
--- a/src/Main.hs
|
||||
+++ b/src/Main.hs
|
||||
@@ -95,7 +95,12 @@ pathToText path =
|
||||
underneath `/nix/store`, but this is the overwhelmingly common use case
|
||||
-}
|
||||
derivationName :: FilePath -> Text
|
||||
-derivationName = Data.Text.dropEnd 4 . Data.Text.drop 44 . pathToText
|
||||
+derivationName p =
|
||||
+ if Data.Text.isPrefixOf "nixos-system" s
|
||||
+ then "nixos-system"
|
||||
+ else s
|
||||
+ where
|
||||
+ s = Data.Text.dropEnd 4 . Data.Text.drop 44 . pathToText $ p
|
||||
|
||||
-- | Group input derivations by their name
|
||||
groupByName :: Map FilePath (Set Text) -> Map Text (Map FilePath (Set Text))
|
@ -18,17 +18,24 @@ def is_regex(line):
|
||||
myre = re.compile(r'^s/(?:\\/|[^/])+/(?:\\/|[^/])*/[ig]?$')
|
||||
return myre.match(line)
|
||||
|
||||
|
||||
line = argv[1]
|
||||
|
||||
if is_regex(line):
|
||||
last = d.get(usr, None)
|
||||
if last:
|
||||
from subprocess import Popen, PIPE
|
||||
p = Popen(['sed', line], stdin=PIPE, stdout=PIPE)
|
||||
p = Popen(['sed', line], stdin=PIPE, stdout=PIPE, stderr=PIPE)
|
||||
so, se = p.communicate(bytes("{}\n".format(last), "UTF-8"))
|
||||
if p.returncode:
|
||||
print("something went wrong when trying to process your regex: {}".format(se.decode()))
|
||||
print("something went wrong when trying to process your regex: {}".format(line.strip()))
|
||||
ret = so.decode()
|
||||
if len(ret) > 512:
|
||||
print('message to long, skipped')
|
||||
elif len(ret.split('\n')) > 5:
|
||||
print('to many lines, skipped')
|
||||
else:
|
||||
if last.strip() != ret.strip():
|
||||
print("\x1b[1m{}\x1b[0m meant: {}".format(usr, ret.strip()))
|
||||
if ret:
|
||||
d[usr] = ret
|
||||
|
@ -1,64 +0,0 @@
|
||||
{ stdenv, fetchFromGitHub, python2Packages }:
|
||||
|
||||
python2Packages.buildPythonApplication rec {
|
||||
name = "electron-cash-${src.rev}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fyookball";
|
||||
repo = "electrum";
|
||||
rev = "a2245ea";
|
||||
sha256 = "1a0ym94azfd1yn97n2jcky344ajbj2amr9l6jpx30pqxndffpbgv";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python2Packages; [
|
||||
dns
|
||||
ecdsa
|
||||
jsonrpclib
|
||||
pbkdf2
|
||||
pyaes
|
||||
pycrypto
|
||||
pyqt4
|
||||
pysocks
|
||||
qrcode
|
||||
requests
|
||||
tlslite
|
||||
|
||||
# plugins
|
||||
keepkey
|
||||
trezor
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
sed -i 's,usr_share = .*,usr_share = "'$out'/share",g' setup.py
|
||||
pyrcc4 icons.qrc -o gui/qt/icons_rc.py
|
||||
# Recording the creation timestamps introduces indeterminism to the build
|
||||
sed -i '/Created: .*/d' gui/qt/icons_rc.py
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
# Despite setting usr_share above, these files are installed under
|
||||
# $out/nix ...
|
||||
mv $out/lib/python2.7/site-packages/nix/store"/"*/share $out
|
||||
rm -rf $out/lib/python2.7/site-packages/nix
|
||||
|
||||
substituteInPlace $out/share/applications/electron.desktop \
|
||||
--replace "Exec=electrum %u" "Exec=$out/bin/electrum %u"
|
||||
'';
|
||||
|
||||
doInstallCheck = true;
|
||||
installCheckPhase = ''
|
||||
$out/bin/electrum help >/dev/null
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A lightweight Bitcoin wallet";
|
||||
longDescription = ''
|
||||
An easy-to-use Bitcoin client featuring wallets generated from
|
||||
mnemonic seeds (in addition to other, more advanced, wallet options)
|
||||
and the ability to perform transactions without downloading a copy
|
||||
of the blockchain.
|
||||
'';
|
||||
homepage = https://electrum.org/;
|
||||
license = licenses.mit;
|
||||
};
|
||||
}
|
7
krebs/5pkgs/simple/kops.nix
Normal file
7
krebs/5pkgs/simple/kops.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ fetchgit, ... }:
|
||||
|
||||
fetchgit {
|
||||
url = https://cgit.krebsco.de/kops;
|
||||
rev = "refs/tags/v1.0.0";
|
||||
sha256 = "0wg8d80sxa46z4i7ir79sci2hwmv3qskzqdg0si64p6vazy8vckb";
|
||||
}
|
@ -9,7 +9,6 @@
|
||||
#
|
||||
|
||||
cmds.deploy = pkgs.withGetopt {
|
||||
diff = { default = /* sh */ "false"; switch = true; };
|
||||
force-populate = { default = /* sh */ "false"; switch = true; };
|
||||
quiet = { default = /* sh */ "false"; switch = true; };
|
||||
source_file = {
|
||||
@ -25,65 +24,6 @@
|
||||
. ${init.env}
|
||||
. ${init.proxy "deploy" opts}
|
||||
|
||||
if \test ${opts.diff.ref} = true; then
|
||||
|
||||
system_profile=/nix/var/nix/profiles/system
|
||||
system_drv_cur=/etc/system.drv
|
||||
|
||||
system_drv_new=$(
|
||||
${pkgs.nix}/bin/nix-instantiate \
|
||||
-Q \
|
||||
-I "$target_path" \
|
||||
-E '
|
||||
(import <nixpkgs/nixos/lib/eval-config.nix> {
|
||||
modules = [ <nixos-config> ];
|
||||
}).config.system.build.toplevel
|
||||
'
|
||||
)
|
||||
|
||||
if \test -e "$system_drv_cur"; then
|
||||
|
||||
system_drv_cur_c=$(${pkgs.coreutils}/bin/readlink -f "$system_drv_cur")
|
||||
system_drv_new_c=$(${pkgs.coreutils}/bin/readlink -f "$system_drv_new")
|
||||
|
||||
if \test "$system_drv_cur_c" = "$system_drv_new_c"; then
|
||||
echo "$0: system up to date" >&2
|
||||
exit 0
|
||||
fi
|
||||
|
||||
system_drv_cur=$system_drv_cur_c \
|
||||
system_drv_new=$system_drv_new_c \
|
||||
${pkgs.utillinux}/bin/script \
|
||||
--command '
|
||||
${pkgs.haskellPackages.nix-diff}/bin/nix-diff \
|
||||
"$system_drv_cur" "$system_drv_new"
|
||||
' \
|
||||
--quiet \
|
||||
--return \
|
||||
/dev/null
|
||||
|
||||
printf 'deploy? [N/y] ' >&2
|
||||
read -r REPLY
|
||||
if \test "$REPLY" != y; then
|
||||
echo "$0: abort!" >&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "$0: --${opts.diff.long} has no effect because "$system_drv_cur" doesn't exist" >&2
|
||||
fi
|
||||
|
||||
new_system=$(${pkgs.nix}/bin/nix-store --realize "$system_drv_new")
|
||||
|
||||
${pkgs.nix}/bin/nix-env -p "$system_profile" --set "$new_system"
|
||||
PATH=${lib.makeBinPath [
|
||||
pkgs.systemd
|
||||
]} \
|
||||
"$system_profile"/bin/switch-to-configuration switch
|
||||
|
||||
${pkgs.coreutils}/bin/ln -fns "$system_drv_new" "$system_drv_cur"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Use system's nixos-rebuild, which is not self-contained
|
||||
export PATH=/run/current-system/sw/bin
|
||||
exec ${utils.with-whatsupnix} \
|
||||
|
@ -57,7 +57,8 @@ with import <stockholm/lib>;
|
||||
passAsFile = [ "text" ];
|
||||
} /* sh */ ''
|
||||
PATH=${makeBinPath (with pkgs; [
|
||||
binutils
|
||||
# TODO remove if everyone migrated to 18.03
|
||||
(if hasAttr "binutils-unwrapped" pkgs then binutils-unwrapped else binutils)
|
||||
coreutils
|
||||
gcc
|
||||
])}
|
||||
|
@ -24,7 +24,7 @@ in
|
||||
stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version";
|
||||
nixpkgs.git = {
|
||||
url = https://github.com/NixOS/nixpkgs;
|
||||
ref = "c5bc83b503dfb29eb27c1deb0268f15c1858e7ce"; # nixos-17.09 @ 2018-02-27
|
||||
ref = "b6ddb9913f2b8206837e0f137db907bdefb9275e"; # nixos-18.03 # 2018-03-24
|
||||
};
|
||||
}
|
||||
override
|
||||
|
35
lass/1systems/cabal/config.nix
Normal file
35
lass/1systems/cabal/config.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
<stockholm/lass>
|
||||
<stockholm/lass/2configs/hw/x220.nix>
|
||||
<stockholm/lass/2configs/boot/stock-x220.nix>
|
||||
|
||||
<stockholm/lass/2configs/mouse.nix>
|
||||
<stockholm/lass/2configs/retiolum.nix>
|
||||
<stockholm/lass/2configs/exim-retiolum.nix>
|
||||
<stockholm/lass/2configs/baseX.nix>
|
||||
<stockholm/lass/2configs/browsers.nix>
|
||||
<stockholm/lass/2configs/programs.nix>
|
||||
<stockholm/lass/2configs/fetchWallpaper.nix>
|
||||
<stockholm/lass/2configs/backups.nix>
|
||||
<stockholm/lass/2configs/games.nix>
|
||||
<stockholm/lass/2configs/bitcoin.nix>
|
||||
];
|
||||
|
||||
krebs.build.host = config.krebs.hosts.cabal;
|
||||
|
||||
#fileSystems = {
|
||||
# "/bku" = {
|
||||
# device = "/dev/mapper/pool-bku";
|
||||
# fsType = "btrfs";
|
||||
# options = ["defaults" "noatime" "ssd" "compress=lzo"];
|
||||
# };
|
||||
#};
|
||||
|
||||
#services.udev.extraRules = ''
|
||||
# SUBSYSTEM=="net", ATTR{address}=="00:24:d7:f0:a0:0c", NAME="wl0"
|
||||
# SUBSYSTEM=="net", ATTR{address}=="f0:de:f1:71:cb:35", NAME="et0"
|
||||
#'';
|
||||
}
|
4
lass/1systems/cabal/source.nix
Normal file
4
lass/1systems/cabal/source.nix
Normal file
@ -0,0 +1,4 @@
|
||||
import <stockholm/lass/source.nix> {
|
||||
name = "cabal";
|
||||
secure = true;
|
||||
}
|
@ -131,7 +131,7 @@ with import <stockholm/lib>;
|
||||
];
|
||||
|
||||
services.xserver.displayManager.sessionCommands = ''
|
||||
${pkgs.xorg.xrandr}/bin/xrandr --output DP-6 --off --output DP-5 --off --output DP-4 --mode 2560x1440 --pos 3840x0 --rotate left --output DP-3 --off --output DP-2 --primary --mode 3840x2160 --pos 0x400 --rotate normal --output DP-1 --off --output DP-0 --mode 2560x1440 --pos 5280x1120 --rotate normal
|
||||
${pkgs.xorg.xrandr}/bin/xrandr --output DP-6 --off --output DP-5 --off --output DP-4 --mode 2560x1440 --pos 3840x0 --rotate left --output DP-3 --off --output DP-2 --primary --mode 3840x2160 --scale 0.5x0.5 --pos 0x400 --rotate normal --output DP-1 --off --output DP-0 --mode 2560x1440 --pos 5280x1120 --rotate normal
|
||||
'';
|
||||
|
||||
networking.hostName = lib.mkForce "BLN02NB0162";
|
||||
@ -168,8 +168,6 @@ with import <stockholm/lib>;
|
||||
'')
|
||||
];
|
||||
|
||||
lass.screenlock.command = "${pkgs.i3lock}/bin/i3lock -i /home/lass/lock.png -t -f";
|
||||
|
||||
programs.adb.enable = true;
|
||||
users.users.mainUser.extraGroups = [ "adbusers" "docker" ];
|
||||
|
||||
|
@ -170,31 +170,11 @@ with import <stockholm/lib>;
|
||||
export PATH=${makeBinPath [
|
||||
pkgs.bash
|
||||
pkgs.coreutils
|
||||
pkgs.nix
|
||||
(pkgs.writeDashBin "is-git-crypt-locked" ''
|
||||
magic=$(dd status=none if="$1" skip=1 bs=1 count=8)
|
||||
test "$magic" = GITCRYPT
|
||||
'')
|
||||
pkgs.nixUnstable
|
||||
]}
|
||||
cd ~/stockholm
|
||||
export SYSTEM="$1"
|
||||
if is-git-crypt-locked ~/secrets/ready; then
|
||||
echo 'secrets are crypted' >&2
|
||||
exit 23
|
||||
else
|
||||
exec nix-shell -I stockholm="$PWD" --run 'deploy --system="$SYSTEM"'
|
||||
fi
|
||||
'';
|
||||
predeploy = pkgs.writeDash "predeploy" ''
|
||||
set -eu
|
||||
export PATH=${makeBinPath [
|
||||
pkgs.bash
|
||||
pkgs.coreutils
|
||||
pkgs.nix
|
||||
]}
|
||||
cd ~/stockholm
|
||||
export SYSTEM="$1"
|
||||
exec nix-shell -I stockholm="$PWD" --run 'test --system="$SYSTEM" --target="$SYSTEM/var/test/" --force-populate'
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -21,59 +21,32 @@ let
|
||||
$BIN "$@"
|
||||
'';
|
||||
|
||||
createChromiumUser = name: extraGroups: precedence:
|
||||
let
|
||||
bin = pkgs.writeScriptBin name ''
|
||||
/var/run/wrappers/bin/sudo -u ${name} -i ${pkgs.chromium}/bin/chromium $@
|
||||
'';
|
||||
in {
|
||||
users.extraUsers.${name} = {
|
||||
inherit name;
|
||||
inherit extraGroups;
|
||||
home = "/home/${name}";
|
||||
uid = genid name;
|
||||
useDefaultShell = true;
|
||||
createHome = true;
|
||||
createUser = script: name: groups: precedence: dpi:
|
||||
{
|
||||
lass.xjail.${name} = {
|
||||
inherit script groups dpi;
|
||||
};
|
||||
environment.systemPackages = [ config.lass.xjail-bins.${name} ];
|
||||
lass.browser.paths.${name} = {
|
||||
path = bin;
|
||||
path = config.lass.xjail-bins.${name};
|
||||
inherit precedence;
|
||||
};
|
||||
security.sudo.extraConfig = ''
|
||||
${mainUser.name} ALL=(${name}) NOPASSWD: ALL
|
||||
'';
|
||||
environment.systemPackages = [
|
||||
bin
|
||||
];
|
||||
};
|
||||
|
||||
createFirefoxUser = name: extraGroups: precedence:
|
||||
let
|
||||
bin = pkgs.writeScriptBin name ''
|
||||
/var/run/wrappers/bin/sudo -u ${name} -i ${pkgs.firefox-devedition-bin}/bin/firefox-devedition $@
|
||||
'';
|
||||
in {
|
||||
users.extraUsers.${name} = {
|
||||
inherit name;
|
||||
inherit extraGroups;
|
||||
home = "/home/${name}";
|
||||
uid = genid name;
|
||||
useDefaultShell = true;
|
||||
createHome = true;
|
||||
};
|
||||
lass.browser.paths.${name} = {
|
||||
path = bin;
|
||||
inherit precedence;
|
||||
};
|
||||
security.sudo.extraConfig = ''
|
||||
${mainUser.name} ALL=(${name}) NOPASSWD: ALL
|
||||
'';
|
||||
environment.systemPackages = [
|
||||
bin
|
||||
];
|
||||
};
|
||||
createChromiumUser = name: groups: precedence:
|
||||
createUser (pkgs.writeDash name ''
|
||||
${pkgs.chromium}/bin/chromium "$@"
|
||||
'') name groups precedence 80;
|
||||
|
||||
#TODO: abstract this
|
||||
createFirefoxUser = name: groups: precedence:
|
||||
createUser (pkgs.writeDash name ''
|
||||
${pkgs.firefox-devedition-bin}/bin/firefox-devedition "$@"
|
||||
'') name groups precedence 80;
|
||||
|
||||
createQuteUser = name: groups: precedence:
|
||||
createUser (pkgs.writeDash name ''
|
||||
${pkgs.qutebrowser}/bin/qutebrowser "$@"
|
||||
'') name groups precedence 60;
|
||||
|
||||
in {
|
||||
|
||||
@ -110,12 +83,13 @@ in {
|
||||
}));
|
||||
};
|
||||
}
|
||||
( createQuteUser "qb" [ "audio" ] 20 )
|
||||
( createFirefoxUser "ff" [ "audio" ] 10 )
|
||||
( createChromiumUser "cr" [ "video" "audio" ] 9 )
|
||||
( createChromiumUser "cr" [ "audio" ] 9 )
|
||||
( createChromiumUser "gm" [ "video" "audio" ] 8 )
|
||||
( createChromiumUser "wk" [ "video" "audio" ] 0 )
|
||||
( createChromiumUser "fb" [ "video" "audio" ] 0 )
|
||||
( createChromiumUser "com" [ "video" "audio" ] 0 )
|
||||
( createChromiumUser "wk" [ "audio" ] 0 )
|
||||
( createChromiumUser "fb" [ "audio" ] 0 )
|
||||
( createChromiumUser "com" [ "audio" ] 0 )
|
||||
( createChromiumUser "fin" [] (-1) )
|
||||
];
|
||||
}
|
||||
|
@ -78,6 +78,7 @@ with import <stockholm/lib>;
|
||||
{ from = "github@lassul.us"; to = lass.mail; }
|
||||
{ from = "ovh@lassul.us"; to = lass.mail; }
|
||||
{ from = "hetzner@lassul.us"; to = lass.mail; }
|
||||
{ from = "allygator@lassul.us"; to = lass.mail; }
|
||||
];
|
||||
system-aliases = [
|
||||
{ from = "mailer-daemon"; to = "postmaster"; }
|
||||
|
@ -8,6 +8,16 @@ let
|
||||
logfile ~/.msmtp.log
|
||||
account prism
|
||||
host prism.r
|
||||
account c-base
|
||||
from lassulus@c-base.org
|
||||
host c-mail.c-base.org
|
||||
port 465
|
||||
tls on
|
||||
tls_starttls off
|
||||
tls_fingerprint 8C:10:A6:AB:1F:82:C4:8F:B1:B4:22:D5:8B:8B:49:9B:59:0B:22:A4
|
||||
auth on
|
||||
user lassulus
|
||||
passwordeval pass show c-base/pass
|
||||
account default: prism
|
||||
'';
|
||||
|
||||
@ -36,9 +46,11 @@ let
|
||||
];
|
||||
dezentrale = [ "to:dezentrale.space" ];
|
||||
dhl = [ "to:dhl@lassul.us" ];
|
||||
eloop = [ "to:eloop.org" ];
|
||||
github = [ "to:github@lassul.us" ];
|
||||
gmail = [ "to:gmail@lassul.us" "to:lassulus@gmail.com" "lassulus@googlemail.com" ];
|
||||
kaosstuff = [ "to:gearbest@lassul.us" "to:banggood@lassul.us" "to:tomtop@lassul.us" ];
|
||||
lugs = [ "to:lugs@lug-s.org" ];
|
||||
nix-devel = [ "to:nix-devel@googlegroups.com" ];
|
||||
patreon = [ "to:patreon@lassul.us" ];
|
||||
paypal = [ "to:paypal@lassul.us" ];
|
||||
@ -63,9 +75,9 @@ let
|
||||
|
||||
muttrc = pkgs.writeText "muttrc" ''
|
||||
# gpg
|
||||
source ${pkgs.neomutt}/share/doc/mutt/samples/gpg.rc
|
||||
source ${pkgs.neomutt}/share/doc/neomutt/samples/gpg.rc
|
||||
set pgp_use_gpg_agent = yes
|
||||
set pgp_sign_as = 0x976A7E4D
|
||||
set pgp_sign_as = 0xDC2A43EF4F11E854B44D599A89E82952976A7E4D
|
||||
set crypt_autosign = yes
|
||||
set crypt_replyencrypt = yes
|
||||
set crypt_verify_sig = yes
|
||||
@ -183,7 +195,7 @@ let
|
||||
name = "mutt";
|
||||
paths = [
|
||||
(pkgs.writeDashBin "mutt" ''
|
||||
exec ${pkgs.neomutt}/bin/mutt -F ${muttrc} $@
|
||||
exec ${pkgs.neomutt}/bin/neomutt -F ${muttrc} $@
|
||||
'')
|
||||
pkgs.neomutt
|
||||
];
|
||||
|
@ -3,10 +3,5 @@
|
||||
{
|
||||
services.privoxy = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
#use polipo
|
||||
forward / localhost:8123
|
||||
'';
|
||||
};
|
||||
services.polipo.enable = true;
|
||||
}
|
||||
|
@ -5,6 +5,4 @@ with import <stockholm/lib>;
|
||||
boot.extraModprobeConfig = ''
|
||||
install dccp /run/current-system/sw/bin/false
|
||||
'';
|
||||
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
}
|
||||
|
@ -49,6 +49,7 @@ in {
|
||||
"www.ubikmedia.eu"
|
||||
"www.youthtube.xyz"
|
||||
"www.ubikmedia.de"
|
||||
"www.joemisch.com"
|
||||
"www.weirdwednesday.de"
|
||||
|
||||
"aldona2.ubikmedia.de"
|
||||
@ -63,6 +64,7 @@ in {
|
||||
"weirdwednesday.ubikmedia.de"
|
||||
"freemonkey.ubikmedia.de"
|
||||
"jarugadesign.ubikmedia.de"
|
||||
"crypto4art.ubikmedia.de"
|
||||
])
|
||||
];
|
||||
|
||||
|
@ -12,9 +12,8 @@ let
|
||||
;
|
||||
|
||||
msmtprc = pkgs.writeText "msmtprc" ''
|
||||
account localhost
|
||||
account default
|
||||
host localhost
|
||||
account default: localhost
|
||||
'';
|
||||
|
||||
sendmail = pkgs.writeDash "msmtp" ''
|
||||
|
@ -11,6 +11,7 @@ _:
|
||||
./screenlock.nix
|
||||
./umts.nix
|
||||
./usershadow.nix
|
||||
./xjail.nix
|
||||
./xserver
|
||||
];
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ let
|
||||
enable = mkEnableOption "screenlock";
|
||||
command = mkOption {
|
||||
type = types.str;
|
||||
default = "${pkgs.i3lock}/bin/i3lock -i /var/lib/wallpaper/wallpaper -f";
|
||||
default = "${pkgs.xlockmore}/bin/xlock -mode life1d -size 1";
|
||||
};
|
||||
};
|
||||
|
||||
@ -28,7 +28,7 @@ let
|
||||
serviceConfig = {
|
||||
SyslogIdentifier = "screenlock";
|
||||
ExecStart = cfg.command;
|
||||
Type = "forking";
|
||||
Type = "simple";
|
||||
User = "lass";
|
||||
};
|
||||
};
|
||||
|
164
lass/3modules/xjail.nix
Normal file
164
lass/3modules/xjail.nix
Normal file
@ -0,0 +1,164 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with import <stockholm/lib>;
|
||||
{
|
||||
options.lass.xjail = mkOption {
|
||||
type = types.attrsOf (types.submodule ({ config, ...}: {
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = types.string;
|
||||
default = config._module.args.name;
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.string;
|
||||
default = config.name;
|
||||
};
|
||||
groups = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
};
|
||||
from = mkOption {
|
||||
type = types.string;
|
||||
default = "lass";
|
||||
};
|
||||
display = mkOption {
|
||||
type = types.string;
|
||||
default = toString (genid_signed config._module.args.name);
|
||||
};
|
||||
dpi = mkOption {
|
||||
type = types.int;
|
||||
default = 90;
|
||||
};
|
||||
extraXephyrArgs = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
};
|
||||
extraVglrunArgs = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
};
|
||||
script = mkOption {
|
||||
type = types.path;
|
||||
default = pkgs.writeScript "echo_lol" "echo lol";
|
||||
};
|
||||
wm = mkOption {
|
||||
#TODO find type
|
||||
type = types.string;
|
||||
default = "${pkgs.writeHaskell "xephyrify-xmonad" {
|
||||
executables.xmonad = {
|
||||
extra-depends = [
|
||||
"containers"
|
||||
"unix"
|
||||
"xmonad"
|
||||
];
|
||||
text = /* haskell */ ''
|
||||
module Main where
|
||||
import XMonad
|
||||
import Data.Monoid
|
||||
import System.Posix.Process (executeFile)
|
||||
import qualified Data.Map as Map
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
xmonad def
|
||||
{ workspaces = [ "1" ]
|
||||
, layoutHook = myLayoutHook
|
||||
, keys = myKeys
|
||||
, normalBorderColor = "#000000"
|
||||
, focusedBorderColor = "#000000"
|
||||
, handleEventHook = myEventHook
|
||||
}
|
||||
|
||||
myEventHook :: Event -> X All
|
||||
|
||||
myEventHook (ConfigureEvent { ev_event_type = 22 }) = do
|
||||
spawn "${pkgs.xorg.xrandr}/bin/xrandr >/dev/null 2>&1"
|
||||
return (All True)
|
||||
|
||||
myEventHook _ = do
|
||||
return (All True)
|
||||
|
||||
myLayoutHook = Full
|
||||
myKeys _ = Map.fromList []
|
||||
'';
|
||||
};
|
||||
}}/bin/xmonad";
|
||||
};
|
||||
};
|
||||
}));
|
||||
default = {};
|
||||
};
|
||||
|
||||
options.lass.xjail-bins = mkOption {
|
||||
type = types.attrsOf types.path;
|
||||
};
|
||||
|
||||
# implementation
|
||||
config = let
|
||||
scripts = mapAttrs' (name: cfg:
|
||||
let
|
||||
newOrExisting = pkgs.writeDash "${cfg.name}-existing" ''
|
||||
DISPLAY=:${cfg.display} ${pkgs.xorg.xrandr}/bin/xrandr
|
||||
if test $? -eq 0; then
|
||||
echo using existing xephyr
|
||||
${sudo_} "$@"
|
||||
else
|
||||
echo starting new xephyr
|
||||
${xephyr_} "$@"
|
||||
fi
|
||||
'';
|
||||
xephyr_ = pkgs.writeDash "${cfg.name}-xephyr" ''
|
||||
${pkgs.xorg.xorgserver}/bin/Xephyr -br -ac -reset -terminate -resizeable -nolisten local -dpi ${toString cfg.dpi} ${cfg.extraXephyrArgs} :${cfg.display} &
|
||||
XEPHYR_PID=$!
|
||||
DISPLAY=:${cfg.display} ${cfg.wm} &
|
||||
WM_PID=$!
|
||||
${sudo_} "$@"
|
||||
${pkgs.coreutils}/bin/kill $WM_PID
|
||||
${pkgs.coreutils}/bin/kill $XEPHYR_PID
|
||||
'';
|
||||
sudo_ = pkgs.writeDash "${cfg.name}-sudo" ''
|
||||
/var/run/wrappers/bin/sudo -u ${cfg.name} -i ${vglrun_} "$@"
|
||||
'';
|
||||
vglrun_ = pkgs.writeDash "${cfg.name}-vglrun" ''
|
||||
DISPLAY=:${cfg.display} ${pkgs.virtualgl}/bin/vglrun ${cfg.extraVglrunArgs} ${cfg.script} "$@"
|
||||
'';
|
||||
in nameValuePair name {
|
||||
existing = newOrExisting;
|
||||
xephyr = xephyr_;
|
||||
sudo = sudo_;
|
||||
vglrun = vglrun_;
|
||||
}
|
||||
) config.lass.xjail;
|
||||
in {
|
||||
|
||||
users.users = mapAttrs' (_: cfg:
|
||||
nameValuePair cfg.name {
|
||||
uid = genid cfg.name;
|
||||
home = "/home/${cfg.name}";
|
||||
useDefaultShell = true;
|
||||
createHome = true;
|
||||
extraGroups = cfg.groups;
|
||||
}
|
||||
) config.lass.xjail;
|
||||
|
||||
users.groups = mapAttrs' (_: cfg:
|
||||
nameValuePair cfg.name {
|
||||
members = [
|
||||
cfg.name
|
||||
cfg.from
|
||||
];
|
||||
}
|
||||
) config.lass.xjail;
|
||||
|
||||
security.sudo.extraConfig = (concatStringsSep "\n" (mapAttrsToList (_: cfg:
|
||||
# TODO allow just the right script with sudo
|
||||
"${cfg.from} ALL=(${cfg.name}) NOPASSWD: ALL"
|
||||
) config.lass.xjail));
|
||||
|
||||
lass.xjail-bins = mapAttrs' (name: cfg:
|
||||
nameValuePair name (pkgs.writeScriptBin cfg.name ''
|
||||
${scripts.${name}.existing} "$@"
|
||||
'')
|
||||
) config.lass.xjail;
|
||||
};
|
||||
}
|
@ -2,15 +2,18 @@
|
||||
|
||||
let
|
||||
|
||||
minimalXmonad = writeHaskell "minimalXmonad" {
|
||||
xephyrify-xmonad = writeHaskell "xephyrify-xmonad" {
|
||||
executables.xmonad = {
|
||||
extra-depends = [
|
||||
"containers"
|
||||
"unix"
|
||||
"xmonad"
|
||||
];
|
||||
text = /* haskell */ ''
|
||||
module Main where
|
||||
import XMonad
|
||||
import Data.Monoid
|
||||
import System.Posix.Process (executeFile)
|
||||
import qualified Data.Map as Map
|
||||
|
||||
main :: IO ()
|
||||
@ -21,8 +24,18 @@ let
|
||||
, keys = myKeys
|
||||
, normalBorderColor = "#000000"
|
||||
, focusedBorderColor = "#000000"
|
||||
, handleEventHook = myEventHook
|
||||
}
|
||||
|
||||
myEventHook :: Event -> X All
|
||||
|
||||
myEventHook (ConfigureEvent { ev_event_type = 22 }) = do
|
||||
spawn "${xorg.xrandr}/bin/xrandr >/dev/null 2>&1"
|
||||
return (All True)
|
||||
|
||||
myEventHook _ = do
|
||||
return (All True)
|
||||
|
||||
myLayoutHook = Full
|
||||
myKeys _ = Map.fromList []
|
||||
'';
|
||||
@ -30,13 +43,20 @@ let
|
||||
};
|
||||
|
||||
in writeDashBin "xephyrify" ''
|
||||
NDISPLAY=:$(${coreutils}/bin/shuf -i 100-65536 -n 1)
|
||||
NDISPLAY=''${NDISPLAY:-$(${coreutils}/bin/shuf -i 100-65536 -n 1)}
|
||||
echo "using DISPLAY $NDISPLAY"
|
||||
${xorg.xorgserver}/bin/Xephyr -br -ac -reset -terminate -resizeable $NDISPLAY &
|
||||
${xorg.xorgserver}/bin/Xephyr -br -ac -reset -terminate -resizeable -dpi 60 -nolisten local :$NDISPLAY &
|
||||
if test -n $DROP_TO_USER; then
|
||||
sleep 1
|
||||
ls /tmp/.X11-unix/
|
||||
id
|
||||
${coreutils}/bin/chgrp "$DROP_TO_USER" "/tmp/.X11-unix/X$NDISPLAY"
|
||||
${coreutils}/bin/chmod 770 "/tmp/.X11-unix/X$NDISPLAY"
|
||||
fi
|
||||
XEPHYR_PID=$!
|
||||
DISPLAY=$NDISPLAY ${minimalXmonad}/bin/xmonad &
|
||||
DISPLAY=:$NDISPLAY ${xephyrify-xmonad}/bin/xmonad &
|
||||
XMONAD_PID=$!
|
||||
DISPLAY=$NDISPLAY ${virtualgl}/bin/vglrun "$@"
|
||||
DISPLAY=:$NDISPLAY ${virtualgl}/bin/vglrun "$@"
|
||||
kill $XMONAD_PID
|
||||
kill $XEPHYR_PID
|
||||
''
|
||||
|
@ -13,11 +13,6 @@ with import <stockholm/lib>;
|
||||
|
||||
http://www.exim.org/
|
||||
|
||||
{
|
||||
url = https://api.github.com/repos/Gabriel439/nix-diff/git/refs/heads/master;
|
||||
filter = "system:${pkgs.jq}/bin/jq -r .object.sha";
|
||||
}
|
||||
|
||||
# ref src/nixpkgs/pkgs/tools/admin/sec/default.nix
|
||||
{
|
||||
url = https://api.github.com/repos/simple-evcorr/sec/tags;
|
||||
|
@ -11,6 +11,7 @@ in {
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.ff
|
||||
pkgs.font-size
|
||||
pkgs.gitAndTools.qgit
|
||||
pkgs.mpv
|
||||
pkgs.sxiv
|
||||
|
26
tv/5pkgs/simple/font-size.nix
Normal file
26
tv/5pkgs/simple/font-size.nix
Normal file
@ -0,0 +1,26 @@
|
||||
{ writeDashBin }:
|
||||
writeDashBin "font-size" ''
|
||||
set -efu
|
||||
|
||||
# set_font NORMAL_FONT BOLD_FONT
|
||||
set_font() {
|
||||
printf '\033]710;%s\007' "$1"
|
||||
printf '\033]711;%s\007' "$2"
|
||||
}
|
||||
|
||||
case ''${1-} in
|
||||
'''|0|--reset)
|
||||
set_font \
|
||||
-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1 \
|
||||
-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1 \
|
||||
;;
|
||||
[1-9]|[1-9][0-9]|[1-9][0-9][0-9])
|
||||
set_font \
|
||||
xft:Monospace:size=$1 \
|
||||
xft:Monospace:size=$1:bold \
|
||||
;;
|
||||
*)
|
||||
echo "$0: bad argument: $1" >&2
|
||||
exit 1
|
||||
esac
|
||||
''
|
@ -133,6 +133,8 @@ myKeys conf = Map.fromList $
|
||||
[ ((_4 , xK_Escape ), forkFile "/run/wrappers/bin/slock" [] Nothing)
|
||||
, ((_4S , xK_c ), kill)
|
||||
|
||||
, ((_4 , xK_p ), forkFile "${pkgs.pass}/bin/passmenu" ["--type"] Nothing)
|
||||
|
||||
, ((_4 , xK_x ), chooseAction spawnTermAt)
|
||||
, ((_4C , xK_x ), spawnRootTerm)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user