| { pkgs ? import <nixpkgs> {} }: |
| let |
| #dockertarpusher = pkgs.python37Packages.buildPythonPackage { |
| # pname = "dockertarpusher"; |
| # version = "0.16"; |
| # src = pkgs.fetchFromGitHub { |
| # owner = "Razikus"; |
| # repo = "dockerregistrypusher"; |
| # rev = "217894b79181a9a02ebc6744e0628777a0f89c36"; |
| # sha256 = "09cqzd9gz42xw30x1jp9mx056k25i20kjzzdg3bk78a4bis29kd4"; |
| # }; |
| # propagatedBuildInputs = with pkgs; [ |
| # python37Packages.requests |
| # ]; |
| #}; |
| #hsregistry_push = import ./registrypush {}; |
| config = pkgs.runCommand "sshd_config" {} '' |
| mkdir -p $out/etc/ssh/ |
| cp ${./sshd_config} $out/etc/ssh/sshd_config |
| #cp ${./test_keys/test_host_key} $out/etc/ssh/ssh_host_ed25519_key |
| #cp ${./test_keys/test_host_key.pub} $out/etc/ssh/ssh_host_ed25519_key.pub |
| #cp ${./test_keys/authorized_keys} $out/etc/ssh/authorized_keys |
| ''; |
| name = "vuko/hs-shells-sftp"; |
| base = pkgs.dockerTools.buildImage { |
| name = "vuko/ssh-base"; |
| tag = "latest"; |
| contents = [pkgs.openssh pkgs.busybox]; |
| }; |
| image = pkgs.dockerTools.buildImage { |
| inherit name; |
| tag = "latest"; |
| fromImage = base; |
| contents = [config]; |
| |
| runAsRoot = '' |
| #!${pkgs.runtimeShell} |
| mkdir /data/ |
| #echo "root:x:0:0::/root:/bin/nologin" > /etc/passwd |
| echo "shells:x:1:1::/data:/bin/sh" >> /etc/passwd |
| mkdir -p /etc/ssh/host/ |
| mkdir -p /etc/ssh/auth/ |
| mkdir -m 700 /tmp |
| chown 1:1 /tmp |
| |
| cat <<EOF > /bin/start |
| #!/bin/sh |
| cp /etc/ssh/auth/authorized_keys /tmp/authorized_keys |
| /bin/sshd -D -e -f /etc/ssh/sshd_config |
| EOF |
| chmod +x /bin/start |
| ''; |
| |
| #https://serverfault.com/questions/344295/is-it-possible-to-run-sshd-as-a-normal-user |
| config = { |
| Cmd = [ "/bin/start" ]; |
| WorkingDir = "/"; |
| ExposedPorts = { |
| "2222/tcp" = {}; |
| }; |
| }; |
| }; |
| push = pkgs.writeShellScriptBin "push" '' |
| BASEDIR=$(realpath $(dirname ''${BASH_SOURCE})) |
| docker load < "''${BASEDIR}/../images/sftp.tar.gz" |
| docker tag ${name}:latest registry.k0.hswaw.net/${name} |
| docker push registry.k0.hswaw.net/${name} |
| #exec {hsregistry_push}/bin/hsregistry-push "$BASEDIR/../images/sftp.tar.gz" "$@" |
| ''; |
| in pkgs.runCommand "hs-shells-sftp" {} '' |
| mkdir $out |
| mkdir -p $out/images $out/bin |
| ln -s ${image} $out/images/sftp.tar.gz |
| install ${push}/bin/push $out/bin/ |
| '' |