Skip to content

Commit

Permalink
nixos/printing: Add openFirewall option
Browse files Browse the repository at this point in the history
  • Loading branch information
onny committed Oct 20, 2023
1 parent 2898e56 commit 373bfda
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
23 changes: 23 additions & 0 deletions nixos/modules/services/printing/cupsd.nix
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,13 @@ let
containsGutenprint = pkgs: length (filterGutenprint pkgs) > 0;
getGutenprint = pkgs: head (filterGutenprint pkgs);

parsePorts = addresses: let
splitAddress = addr: lib.strings.splitString ":" addr;
extractPort = addr: builtins.elemAt (builtins.tail (splitAddress addr)) 0;
toInt = str: lib.strings.toInt str;
in
builtins.map (address: toInt (extractPort address)) addresses;

in

{
Expand Down Expand Up @@ -172,6 +179,15 @@ in
'';
};

openFirewall = mkOption {
type = types.bool;
default = false;
description = ''
Whether to open the firewall for TCP/UDP ports specified in
listenAdrresses option.
'';
};

bindirCmds = mkOption {
type = types.lines;
internal = true;
Expand Down Expand Up @@ -463,6 +479,13 @@ in

security.pam.services.cups = {};

networking.firewall = let
listenPorts = parsePorts cfg.listenAddresses;
in mkIf cfg.openFirewall {
allowedTCPPorts = listenPorts;
allowedUDPPorts = listenPorts;
};

};

meta.maintainers = with lib.maintainers; [ matthewbauer ];
Expand Down
2 changes: 1 addition & 1 deletion nixos/tests/printing.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ import ./make-test-python.nix (
startWhenNeeded = socket;
listenAddresses = [ "*:631" ];
defaultShared = true;
openFirewall = true;
extraConf = ''
<Location />
Order allow,deny
Allow from all
</Location>
'';
};
networking.firewall.allowedTCPPorts = [ 631 ];
# Add a HP Deskjet printer connected via USB to the server.
hardware.printers.ensurePrinters = [{
name = "DeskjetLocal";
Expand Down

0 comments on commit 373bfda

Please sign in to comment.