FROM fedora:44

ENV TARGET_USER=garrettmills
ENV TARGET_UID=1000
ENV TARGET_GID=1000
ENV DOCKER_RUN_DIR=/run/dind

COPY k8s.repo /etc/yum.repos.d/k8s.repo
COPY startup.bash /usr/sbin/startup.bash
COPY startwm-xfce.sh /etc/xrdp/startwm-xfce.sh

RUN dnf install -y \
        https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-44.noarch.rpm \
        https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-44.noarch.rpm \
    && dnf install -y \
        zip unzip curl tar vim htop fish stow git openssh-clients gnupg2 make nodejs \
        procps-ng rsync screen sudo which autojump hostname jq the_silver_searcher wget \
        coreutils util-linux openssh-server bind-utils kubectl iproute iputils ffmpeg \
    && wget -O /etc/yum.repos.d/kanidm.repo https://download.opensuse.org/repositories/network:/idm/Fedora_44/network:idm.repo \
    && wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/fedora/docker-ce.repo \
    && dnf install -y kanidm-clients docker-ce-cli docker-buildx-plugin docker-compose-plugin \
        xfce4-session xfwm4 xfce4-panel xfdesktop xfce4-settings xfce4-terminal xfce4-appfinder \
        xfce4-notifyd xfce4-screenshooter Thunar dbus-x11 dbus-daemon adwaita-icon-theme xdg-utils \
        google-noto-sans-fonts google-noto-sans-mono-fonts liberation-fonts \
        firefox thunderbird xrdp xorgxrdp openssl fuse3 \
    && dnf clean all -y \
    && chmod +x /usr/sbin/startup.bash /etc/xrdp/startwm-xfce.sh \
    && rm -f /etc/xrdp/cert.pem /etc/xrdp/key.pem /etc/xrdp/rsakeys.ini \
    && rm -f /etc/xdg/autostart/xfce-polkit.desktop /etc/xdg/autostart/geoclue-demo-agent.desktop /etc/xdg/autostart/localsearch-3.desktop \
    && sed -i \
        -e 's|^security_layer=.*|security_layer=tls|' \
        -e 's|^certificate=.*|certificate=/etc/xrdp/tls/cert.pem|' \
        -e 's|^key_file=.*|key_file=/etc/xrdp/tls/key.pem|' \
        -e 's|^autorun=.*|autorun=Xorg|' \
        -e '/^\[Xvnc\]/,$d' \
        /etc/xrdp/xrdp.ini \
    && sed -i \
        -e 's|^EnableUserWindowManager=.*|EnableUserWindowManager=false|' \
        -e 's|^DefaultWindowManager=.*|DefaultWindowManager=/etc/xrdp/startwm-xfce.sh|' \
        -e 's|^AllowRootLogin=.*|AllowRootLogin=false|' \
        /etc/xrdp/sesman.ini \
    && printf 'PasswordAuthentication no\nKbdInteractiveAuthentication no\n' > /etc/ssh/sshd_config.d/20-no-password.conf

EXPOSE 22 3389

CMD ["/usr/sbin/startup.bash"]
