diff --git a/.gitignore b/.gitignore index 01a3ee80..d15de6d9 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,5 @@ doc/*.pyg doc/movies/snippets/ doc/movies/targets.mk __pycache__ -alectryon-html/ \ No newline at end of file +alectryon-html/ +.envrc diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 00000000..99b7ed1d --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,14 @@ +image: + file: .nix/gitpod.Dockerfile +tasks: + - init: > + mkdir -p /home/gitpod/.config/nix && + echo 'sandbox = false' >> /home/gitpod/.config/nix/nix.conf && + echo 'use nix' > .envrc && + direnv allow . + +vscode: + extensions: + - bbenoist.Nix + - maximedenes.vscoq + - cab404.vscode-direnv diff --git a/.nix/gitpod.Dockerfile b/.nix/gitpod.Dockerfile new file mode 100644 index 00000000..96031f10 --- /dev/null +++ b/.nix/gitpod.Dockerfile @@ -0,0 +1,58 @@ +# MIT License + +# Copyright (c) 2021 Gitpod + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +FROM gitpod/workspace-base + +USER root + +# Install Nix +RUN addgroup --system nixbld \ + && adduser gitpod nixbld \ + && for i in $(seq 1 30); do useradd -ms /bin/bash nixbld$i && adduser nixbld$i nixbld; done \ + && mkdir -m 0755 /nix && chown gitpod /nix \ + && mkdir -p /etc/nix && echo 'sandbox = false' > /etc/nix/nix.conf + +# Install Nix +CMD /bin/bash -l +USER gitpod +ENV USER gitpod +WORKDIR /home/gitpod + +RUN touch .bash_profile \ + && curl https://nixos.org/releases/nix/nix-2.3.14/install | sh + +RUN echo '. /home/gitpod/.nix-profile/etc/profile.d/nix.sh' >> /home/gitpod/.bashrc +RUN mkdir -p /home/gitpod/.config/nixpkgs && echo '{ allowUnfree = true; }' >> /home/gitpod/.config/nixpkgs/config.nix + +# Install cachix +RUN . /home/gitpod/.nix-profile/etc/profile.d/nix.sh \ + && nix-env -iA cachix -f https://cachix.org/api/v1/install \ + && cachix use cachix + +# Install git +RUN . /home/gitpod/.nix-profile/etc/profile.d/nix.sh \ + && nix-env -i git git-lfs + +# Install direnv +RUN . /home/gitpod/.nix-profile/etc/profile.d/nix.sh \ + && nix-env -i direnv \ + && direnv hook bash >> /home/gitpod/.bashrc \ No newline at end of file