diff --git a/flake.nix b/flake.nix index 708accc..b51b601 100644 --- a/flake.nix +++ b/flake.nix @@ -1,38 +1,77 @@ -# Template: https://nixos-and-flakes.thiscute.world/development/intro { - description = "Dev Shell for dobutterfliescry.net"; + description = "cry64's dobutterfliescry.net"; inputs = { + systems.url = "github:nix-systems/default"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; }; outputs = { + self, nixpkgs, nixpkgs-unstable, ... - }: let - system = "x86_64-linux"; - pkgs = import nixpkgs { - inherit system; - }; - pkgs-unstable = import nixpkgs-unstable { - inherit system; - }; + } @ inputs: let + systems = import inputs.systems; + + mkPkgs = pkgs: system: + import pkgs { + inherit system; + allowUnfree = false; + allowBroken = false; + overlays = builtins.attrValues self.overlays or {}; + }; + + forAllSystems = f: + nixpkgs.lib.genAttrs systems (system: + f system (mkPkgs nixpkgs system) (mkPkgs nixpkgs-unstable system)); in { - devShells."${system}".default = pkgs.mkShell { - packages = [ - # dev local server - pkgs.simple-http-server - - # scss->css transpilation - # pkgs.sass seems broken on Nix currently, use pkgs.dark-sass instead - pkgs.dart-sass - # image baking (from .svg) - pkgs.imagemagick - ]; - - shell = "${pkgs.bash}/bin/bash"; + overlays.default = self: super: { + dobutterfliescry-net = super.stdenv.mkDerivation { + name = "dobutterfliescry.net"; + src = self; + nativeBuildInputs = [super.makeWrapper]; + installPhase = '' + mkdir -p $out + cp -r $src/www $out/ + ''; + }; }; + + checks = self.packages; + packages = forAllSystems (system: pkgs: upkgs: rec { + default = dobutterfliescry-net; + dobutterfliescry-net = pkgs.dobutterfliescry-net; + }); + + devShells = forAllSystems (system: pkgs: upkgs: let + devPackages = with pkgs; [ + # dev local server + simple-http-server + + # css baking + ruby.devEnv + rubyPackages_3_3.sass + # image baking (from .svg) + imagemagick + ]; + in { + default = pkgs.mkShell { + packages = devPackages; + shell = "${pkgs.bash}/bin/bash"; + }; + + fhs = + (pkgs.buildFHSEnv + (pkgs.appimageTools.defaultFhsEnvArgs + // { + name = "dobutterfliescry.net-fhs"; + targetPkgs = devPackages; + runScript = "bash"; + extraOutputsToInstall = ["dev"]; + })).env; + }); }; }