diff options
-rw-r--r-- | nix/default.nix | 1 | ||||
-rw-r--r-- | nix/module.nix | 6 | ||||
-rw-r--r-- | nix/recv.nix | 24 | ||||
-rw-r--r-- | recv | 13 |
4 files changed, 44 insertions, 0 deletions
diff --git a/nix/default.nix b/nix/default.nix index dc225a3..b872f6a 100644 --- a/nix/default.nix +++ b/nix/default.nix | |||
@@ -6,4 +6,5 @@ self: super: | |||
6 | pulseaudio-ctl = self.callPackage ./pulseaudio-ctl.nix {}; | 6 | pulseaudio-ctl = self.callPackage ./pulseaudio-ctl.nix {}; |
7 | monitor-uucp = self.callPackage ./monitor-uucp.nix {}; | 7 | monitor-uucp = self.callPackage ./monitor-uucp.nix {}; |
8 | rolling-directory = self.callPackage ./rolling-directory.nix {}; | 8 | rolling-directory = self.callPackage ./rolling-directory.nix {}; |
9 | recv = self.callPackage ./recv.nix {}; | ||
9 | } | 10 | } |
diff --git a/nix/module.nix b/nix/module.nix index edc9bfb..40082b1 100644 --- a/nix/module.nix +++ b/nix/module.nix | |||
@@ -45,11 +45,17 @@ in { | |||
45 | type = with types; listOf (submodule dirConfig); | 45 | type = with types; listOf (submodule dirConfig); |
46 | default = []; | 46 | default = []; |
47 | }; | 47 | }; |
48 | |||
49 | programs.recv.enable = mkEnableOption "the ‘recv’ program"; | ||
48 | }; | 50 | }; |
49 | 51 | ||
50 | config = { | 52 | config = { |
51 | nixpkgs.overlays = [ (import ./default.nix) ]; | 53 | nixpkgs.overlays = [ (import ./default.nix) ]; |
52 | 54 | ||
53 | systemd.services = listToAttrs (map dirService config.services.rollingDirectories); | 55 | systemd.services = listToAttrs (map dirService config.services.rollingDirectories); |
56 | |||
57 | security.wrappers = mkIf config.programs.recv.enable { | ||
58 | recv.source = "${pkgs.recv}/bin/recv"; | ||
59 | }; | ||
54 | }; | 60 | }; |
55 | } | 61 | } |
diff --git a/nix/recv.nix b/nix/recv.nix new file mode 100644 index 0000000..6bdc559 --- /dev/null +++ b/nix/recv.nix | |||
@@ -0,0 +1,24 @@ | |||
1 | { stdenv | ||
2 | , zsh, gnutar | ||
3 | }: | ||
4 | |||
5 | stdenv.mkDerivation rec { | ||
6 | name = "recv-${version}"; | ||
7 | version = "0.1"; | ||
8 | src = ../recv; | ||
9 | |||
10 | phases = [ "buildPhase" "installPhase" ]; | ||
11 | |||
12 | inherit zsh gnutar; | ||
13 | |||
14 | buildPhase = '' | ||
15 | substituteAll $src recv | ||
16 | ''; | ||
17 | |||
18 | installPhase = '' | ||
19 | mkdir -p $out/bin | ||
20 | |||
21 | install -m 755 -t $out/bin \ | ||
22 | recv | ||
23 | ''; | ||
24 | } | ||
@@ -0,0 +1,13 @@ | |||
1 | #!@zsh@/bin/zsh | ||
2 | |||
3 | user="$0" | ||
4 | [[ -n "$user" ]] || exit 2 | ||
5 | |||
6 | homeDir=$(getent passwd "$user" | cut -f6 -d:) | ||
7 | recvDir="${homeDir}/uucppublic" | ||
8 | |||
9 | [[ -d "$recvDir" ]] || exit 1 | ||
10 | |||
11 | umask 007 | ||
12 | |||
13 | exec @gnutar@/bin/tar -xv -C $(mktemp -d -p "$recvDir" recv.XXXXXXXXXX) --owner "$user" --no-same-permissions \ No newline at end of file | ||