From 97bd06f03ddccaba03cf7635a3a5c25d547aa404 Mon Sep 17 00:00:00 2001 From: makefu Date: Sun, 22 Jan 2017 23:41:01 +0100 Subject: [PATCH] m omo: add shared printer --- makefu/1systems/omo.nix | 1 + makefu/2configs/git/brain-retiolum.nix | 67 -------------------------- makefu/2configs/printer-shared.nix | 38 +++++++++++++++ 3 files changed, 39 insertions(+), 67 deletions(-) delete mode 100644 makefu/2configs/git/brain-retiolum.nix create mode 100644 makefu/2configs/printer-shared.nix diff --git a/makefu/1systems/omo.nix b/makefu/1systems/omo.nix index 609d52134..5241b0b8e 100644 --- a/makefu/1systems/omo.nix +++ b/makefu/1systems/omo.nix @@ -58,6 +58,7 @@ in { # ../2configs/elchos/search.nix # ../2configs/elchos/log.nix # ../2configs/elchos/irc-token.nix + ../2configs/printer-shared.nix ## as long as pyload is not in nixpkgs: # docker run -d -v /var/lib/pyload:/opt/pyload/pyload-config -v /media/crypt0/pyload:/opt/pyload/Downloads --name pyload --restart=always -p 8112:8000 -P writl/pyload diff --git a/makefu/2configs/git/brain-retiolum.nix b/makefu/2configs/git/brain-retiolum.nix deleted file mode 100644 index b637ca039..000000000 --- a/makefu/2configs/git/brain-retiolum.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ config, lib, pkgs, ... }: -# TODO: remove tv lib :) -with import ; -let - - repos = priv-repos // krebs-repos ; - rules = concatMap krebs-rules (attrValues krebs-repos) ++ concatMap priv-rules (attrValues priv-repos); - - krebs-repos = mapAttrs make-krebs-repo { - brain = { }; - }; - - priv-repos = mapAttrs make-priv-repo { - autosync = { }; - pass = { }; - }; - - # TODO move users to separate module - make-priv-repo = name: { ... }: { - inherit name; - public = false; - }; - - make-krebs-repo = with git; name: { ... }: { - inherit name; - public = false; - hooks = { - post-receive = pkgs.git-hooks.irc-announce { - nick = config.networking.hostName; - channel = "#retiolum"; - # TODO remove the hardcoded hostname - server = "ni.r"; - }; - }; - }; - - 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: - singleton { - inherit user; - repo = [ repo ]; - perm = fetch; - }; - - # TODO: get the list of all krebsministers - krebsminister = with config.krebs.users; [ lass tv ]; - all-makefu = with config.krebs.users; [ makefu makefu-omo makefu-tsp ]; - - priv-rules = repo: set-owners repo all-makefu; - - krebs-rules = repo: - set-owners repo all-makefu ++ set-ro-access repo krebsminister; - -in { - imports = [ ]; - krebs.git = { - enable = true; - cgit.enable = false; - inherit repos rules; - }; -} diff --git a/makefu/2configs/printer-shared.nix b/makefu/2configs/printer-shared.nix new file mode 100644 index 000000000..2a9e6724d --- /dev/null +++ b/makefu/2configs/printer-shared.nix @@ -0,0 +1,38 @@ +{ pkgs, config, ... }: + +{ + nixpkgs.config.allowUnfree = true; + services.avahi.enable = true; + services.avahi.publish.enable = true; + services.avahi.publish.userServices = true; + services.avahi.interfaces = [ config.makefu.server.primary-itf ]; + services.avahi.ipv6 = false; + services.avahi.nssmdns = true; + # via https://github.com/tjfontaine/airprint-generate/ + # environment.etc."avahi/services/samsung_scx2300.service".text + nixpkgs.config.packageOverrides = pkgs: rec { + avahi = pkgs.stdenv.lib.overrideDerivation pkgs.avahi (oldAttrs: { + postFixup = let + cfg = pkgs.writeText "airprint-scx3200.service" ''AirPrint Samsung_SCX-3200_Series @ %h_ipp._tcp_universal._sub._ipp._tcp631txtvers=1qtotal=1Transparent=TURF=nonerp=printers/Samsung_SCX-3200_Seriesnote=Samsung SCX-3200 Seriesproduct=(GPL Ghostscript)printer-state=3printer-type=0x801044pdl=application/octet-stream,application/pdf,application/postscript,application/vnd.cups-raster,image/gif,image/jpeg,image/png,image/tiff,image/urf,text/html,text/plain,application/vnd.adobe-reader-postscript,application/vnd.cups-command''; + in '' + cp ${cfg} $out/etc/avahi/services/airprint-scx3200.service + ''; + }); + }; + + # only allowed in local network + services.printing = { + enable = true; + browsing = true; + #avahiEnabled = true; + defaultShared = true; + listenAddresses = [ "*:631" ]; + drivers = [ + pkgs.samsungUnifiedLinuxDriver + ]; + }; + + # scanners are printers just in reverse anyway + hardware.sane.enable = true; + hardware.sane.extraBackends = [ pkgs.samsungUnifiedLinuxDriver ]; +}