oxwm

https://git.tonybtw.com/oxwm.git git://git.tonybtw.com/oxwm.git
1,747 bytes raw
1
{
2
  description = "oxwm - A dynamic window manager.";
3
  inputs = {
4
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
5
  };
6
  outputs = {
7
    self,
8
    nixpkgs,
9
  }: let
10
    systems = ["x86_64-linux" "aarch64-linux"];
11
12
    forAllSystems = fn: nixpkgs.lib.genAttrs systems (system: fn nixpkgs.legacyPackages.${system});
13
  in {
14
    packages = forAllSystems (pkgs: rec {
15
      default = pkgs.callPackage ./default.nix {};
16
      oxwm = default;
17
    });
18
19
    devShells = forAllSystems (pkgs: {
20
      default = pkgs.mkShell {
21
        buildInputs = [
22
          pkgs.rustc
23
          pkgs.cargo
24
          pkgs.alacritty
25
          pkgs.just
26
          pkgs.xorg.xorgserver
27
          pkgs.xorg.libX11
28
          pkgs.xorg.libXft
29
          pkgs.xorg.libXrender
30
          pkgs.freetype
31
          pkgs.fontconfig
32
          pkgs.pkg-config
33
        ];
34
        shellHook = ''
35
          export PS1="(oxwm-dev) $PS1"
36
        '';
37
        RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}";
38
      };
39
    });
40
41
    formatter = forAllSystems (pkgs: pkgs.alejandra);
42
43
    nixosModules.default = {
44
      config,
45
      lib,
46
      pkgs,
47
      ...
48
    }: let
49
      inherit (lib) mkEnableOption mkOption mkIf types;
50
      cfg = config.services.xserver.windowManager.oxwm;
51
    in {
52
      options.services.xserver.windowManager.oxwm = {
53
        enable = mkEnableOption "oxwm window manager";
54
        package = mkOption {
55
          type = types.package;
56
          default = self.packages.${pkgs.system}.default;
57
          description = "The oxwm package to use";
58
        };
59
      };
60
61
      config = mkIf cfg.enable {
62
        services.displayManager.sessionPackages = [cfg.package];
63
64
        environment.systemPackages = [
65
          cfg.package
66
        ];
67
      };
68
    };
69
  };
70
}