From 65654282a98cb0590d498e4ed9c924f97646f1dc Mon Sep 17 00:00:00 2001 From: Aylur Date: Wed, 25 Sep 2024 23:22:01 +0000 Subject: docs: restructure --- docs/guide/getting-started/nix.md | 154 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 docs/guide/getting-started/nix.md (limited to 'docs/guide/getting-started/nix.md') diff --git a/docs/guide/getting-started/nix.md b/docs/guide/getting-started/nix.md new file mode 100644 index 0000000..2b04bdc --- /dev/null +++ b/docs/guide/getting-started/nix.md @@ -0,0 +1,154 @@ +# Nix + +## Astal + +Using Astal on Nix will require you to package your project. + +:::code-group + +```nix [ Lua] +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + astal = { + url = "github:aylur/astal"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { self, nixpkgs, astal }: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in { + packages.${system}.default = astal.lib.mkLuaPacakge { + inherit pkgs; + src = ./path/to/project; # should contain init.lua + + # add extra glib packages or binaries + extraPackages = [ + astal.packages.${system}.battery + pkgs.dart-sass + ]; + }; + }; +} +``` + +```nix [ Python] +# Not documented yet +``` + +```nix [ Vala] +# keep in mind that this is just the nix derivation +# and you still have to use some build tool like meson +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + astal.url = "github:aylur/astal"; + }; + + outputs = { self, nixpkgs, astal }: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in { + packages.${system} = { + default = pkgs.stdenv.mkDerivation { + name = "my-shell"; + src = ./.; + + nativeBuildInputs = with pkgs; [ + meson + ninja + pkg-config + vala + gobject-introspection + ]; + + # add extra packages + buildInputs = [ + astal.packages.${system}.astal + ]; + }; + }; + }; +} +``` + +::: + +## AGS + +The recommended way to use AGS on NixOS is through the home-manager module. + +Example content of a `flake.nix` file that contains your `homeConfigurations`. + + + +:::code-group + +```nix [ flake.nix] +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # add ags https://github.com/Aylur/ags/pull/504 + ags.url = "github:aylur/ags/v2"; + }; + + outputs = { home-manager, nixpkgs, ... }@inputs: + let + system = "x86_64-linux"; + in + { + homeConfigurations."${username}" = home-manager.lib.homeManagerConfiguration { + pkgs = import nixpkgs { inherit system; }; + + # pass inputs as specialArgs + extraSpecialArgs = { inherit inputs; }; + + # import your home.nix + modules = [ ./home-manager/home.nix ]; + }; + }; +} +``` + +::: + +Example content of `home.nix` file + +:::code-group + +```nix [ home.nix] +{ inputs, pkgs, ... }: +{ + # add the home manager module + imports = [ inputs.ags.homeManagerModules.default ]; + + programs.ags = { + enable = true; + configDir = ../ags; + + # additional packages to add to gjs's runtime + extraPackages = with pkgs; [ + inputs.ags.packages.${pkgs.system}.battery + fzf + ]; + }; +} +``` + +::: + +AGS by default only includes the core `libastal` library. +If you want to include any other [library](../libraries/references) you have to add them to `extraPackages`. +You can also add binaries which will be added to `$PATH`. + +:::warning +The `configDir` option symlinks the given path to `~/.config/ags`. +If you already have your source code there leave it as `null`. +::: -- cgit v1.2.3