From e3222a7e7096d155da507ef41bbb2002ff4aed89 Mon Sep 17 00:00:00 2001
From: lassulus <lass@aidsballs.de>
Date: Sat, 19 Sep 2015 23:42:05 +0200
Subject: [PATCH] lass 2 browsers: add create{Firefox,Chromium}User

---
 lass/2configs/browsers.nix | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/lass/2configs/browsers.nix b/lass/2configs/browsers.nix
index 2aaeda63d..4fe06b729 100644
--- a/lass/2configs/browsers.nix
+++ b/lass/2configs/browsers.nix
@@ -4,7 +4,7 @@ let
   inherit (import ../4lib { inherit pkgs lib; }) simpleScript;
 
   mainUser = config.users.extraUsers.mainUser;
-  createBrowserUser = name: extraGroups: packages:
+  createChromiumUser = name: extraGroups: packages:
     {
       users.extraUsers = {
         ${name} = {
@@ -26,6 +26,28 @@ let
       ];
     };
 
+  createFirefoxUser = name: extraGroups: packages:
+    {
+      users.extraUsers = {
+        ${name} = {
+          inherit name;
+          inherit extraGroups;
+          home = "/home/${name}";
+          useDefaultShell = true;
+          createHome = true;
+        };
+      };
+      lass.per-user.${name}.packages = packages;
+      security.sudo.extraConfig = ''
+        ${mainUser.name} ALL=(${name}) NOPASSWD: ALL
+      '';
+      environment.systemPackages = [
+        (simpleScript name ''
+          sudo -u ${name} -i firefox $@
+        '')
+      ];
+    };
+
   #TODO: abstract this
 
 in {
@@ -40,11 +62,11 @@ in {
   imports = [
     ../3modules/per-user.nix
   ] ++ [
-    ( createBrowserUser "ff" [ "audio" ] [ pkgs.firefox ] )
-    ( createBrowserUser "cr" [ "audio" ] [ pkgs.chromium ] )
-    ( createBrowserUser "fb" [ ] [ pkgs.chromium ] )
-    ( createBrowserUser "gm" [ ] [ pkgs.chromium ] )
-    ( createBrowserUser "flash" [ ] [ pkgs.flash ] )
+    ( createFirefoxUser "ff" [ "audio" ] [ pkgs.firefox ] )
+    ( createChromiumUser "cr" [ "audio" ] [ pkgs.chromium ] )
+    ( createChromiumUser "fb" [ ] [ pkgs.chromium ] )
+    ( createChromiumUser "gm" [ ] [ pkgs.chromium ] )
+    ( createChromiumUser "flash" [ ] [ pkgs.flash ] )
   ];
 
   nixpkgs.config.packageOverrides = pkgs : {