diff --git a/flake.nix b/flake.nix index 1d05963..abf9954 100644 --- a/flake.nix +++ b/flake.nix @@ -8,113 +8,117 @@ }; outputs = { self, nixpkgs, flake-utils, poonam }: - flake-utils.lib.eachDefaultSystem (system: - let - pkgs = nixpkgs.legacyPackages.${system}; - my-python = pkgs.python3; - python-with-my-packages = my-python.withPackages (p: with p; [ - jinja2 - click - # other python packages you want in the devShell - ]); - python-deps = with pkgs.python3Packages; [ - # Packages necessary at runtime to run build script - jinja2 - python-ctags3 - ]; - in - { - devShell = pkgs.mkShell { - buildInputs = [ - python-with-my-packages - pkgs.pandoc + flake-utils.lib.eachDefaultSystem + (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + my-python = pkgs.python3; + python-with-my-packages = my-python.withPackages (p: with p; [ + jinja2 + click + # other python packages you want in the devShell + ]); + python-deps = with pkgs.python3Packages; [ + # Packages necessary at runtime to run build script + jinja2 + python-ctags3 ]; - shellHook = '' - PYTHONPATH=${python-with-my-packages}/${python-with-my-packages.sitePackages} - # This only works when you have ~/vimwiki locally, since I'm not putting my unfiltered kitaab online - alias build='python3 src/kitaab-public/main.py' - # maybe set more env-vars - ''; - }; - packages.basant = pkgs.python3Packages.buildPythonPackage { - pname = "basant"; - src = ./.; - version = "0.1"; - propagatedBuildInputs = [ python-deps ]; - doCheck = false; - }; - packages.site = pkgs.stdenv.mkDerivation { - name = "anish-lakhwara-site"; - src = ./.; - buildInputs = [ poonam.defaultPackage.${system} self.packages.${system}.basant ]; - configurePhase = '' + in + { + devShell = pkgs.mkShell { + buildInputs = [ + python-with-my-packages + pkgs.pandoc + ]; + shellHook = '' + PYTHONPATH=${python-with-my-packages}/${python-with-my-packages.sitePackages} + # This only works when you have ~/vimwiki locally, since I'm not putting my unfiltered kitaab online + alias build='python3 src/kitaab-public/main.py' + # maybe set more env-vars + ''; + }; + packages.basant = pkgs.python3Packages.buildPythonPackage { + pname = "basant"; + src = ./.; + version = "0.1"; + propagatedBuildInputs = [ python-deps ]; + doCheck = false; + }; + packages.site = pkgs.stdenv.mkDerivation { + name = "anish-lakhwara-site"; + src = ./.; + buildInputs = [ poonam.defaultPackage.${system} self.packages.${system}.basant ]; + configurePhase = '' cp -r ${poonam.defaultPackage.${system}}/public/ ./ ''; - buildPhase = '' - ${self.packages.${system}.basant}/bin/main.py - ''; - installPhase = '' - mkdir -p $out - cp -R output/* $out/ - ''; - }; - defaultPackage = self.packages.${system}.site; - - # Test container - nixosConfigurations.container = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - self.nixosModule - ({ pkgs, ... }: { - # Only allow this to boot as a container - boot.isContainer = true; - networking.hostName = "basant"; - services."anish.lakhwara.com".enable = true; - }) - ]; - }; - - # also need a module that refreshes this flake.lock, but maybe that shouldn't live here? - nixosModule = { options, lib, config, pkgs, ... }: - let - serverName = "anish.lakhwara.com"; - webRoot = "/var/www/${serverName}"; - - serviceConfig = config.services."${serverName}"; - options = { - enable = lib.mkEnableOption "${serverName} service"; - }; - in - { - options.services.${serverName} = options; - config = lib.mkIf serviceConfig.enable { - systemd.services."source-${serverName}" = { - description = '' - https://${serverName} source - ''; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - Type = "oneshot"; - DynamicUser = "yes"; - }; - startAt = "*00:00:00"; - path = with pkgs; [ nix gnutar gzip curl jq ] ++ [ self.packages.${system}.site ]; - script = '' - set -ex - - ln -sfT ${self.packages.${system}.site} ${webRoot} - ''; - }; - # Allow nginx through the firewall - networking.firewall.allowedTCPPorts = [ 80 ]; - services.nginx.enable = true; - services.nginx.virtualHosts.${serverName} = { - forceSSL = true; - enableACME = true; - locations."/" = { root = "${webRoot}"; }; - }; - - }; + buildPhase = '' + ${self.packages.${system}.basant}/bin/main.py + ''; + installPhase = '' + mkdir -p $out + cp -R output/* $out/ + ''; }; - }); + defaultPackage = self.packages.${system}.site; + + # also need a module that refreshes this flake.lock, but maybe that shouldn't live here? + nixosModule = { options, lib, config, pkgs, ... }: + let + serverName = "anish.lakhwara.com"; + webRoot = "/var/www/${serverName}"; + + serviceConfig = config.services."${serverName}"; + options = { + enable = lib.mkEnableOption "${serverName} service"; + }; + in + { + options.services.${serverName} = options; + config = lib.mkIf serviceConfig.enable { + systemd.services."source-${serverName}" = { + description = '' + https://${serverName} source + ''; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "oneshot"; + DynamicUser = "yes"; + }; + startAt = "*00:00:00"; + path = with pkgs; [ nix gnutar gzip curl jq ] ++ [ self.packages.${system}.site ]; + script = '' + set -ex + + ln -sfT ${self.packages.${system}.site} ${webRoot} + ''; + }; + # Allow nginx through the firewall + networking.firewall.allowedTCPPorts = [ 80 ]; + services.nginx.enable = true; + services.nginx.virtualHosts.${serverName} = { + forceSSL = true; + enableACME = true; + locations."/" = { root = "${webRoot}"; }; + }; + + }; + }; + }) // { + # Test container + nixosConfigurations."test" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + self.nixosModule + ({ pkgs, ... }: { + # Only allow this to boot as a container + boot.isContainer = true; + networking.hostName = "basant"; + # Allow nginx through the firewall + networking.firewall.allowedTCPPorts = [ 80 ]; + services.nginx.enable = true; + services."anish.lakhwara.com".enable = true; + }) + ]; + }; + }; }