oxwm

https://git.tonybtw.com/oxwm.git git://git.tonybtw.com/oxwm.git
1,716 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.libX11
27
          pkgs.xorg.libXft
28
          pkgs.xorg.libXrender
29
          pkgs.freetype
30
          pkgs.fontconfig
31
          pkgs.pkg-config
32
        ];
33
        shellHook = ''
34
          export PS1="(oxwm-dev) $PS1"
35
        '';
36
        RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}";
37
      };
38
    });
39
40
    formatter = forAllSystems (pkgs: pkgs.alejandra);
41
42
    nixosModules.default = {
43
      config,
44
      lib,
45
      pkgs,
46
      ...
47
    }: let
48
      inherit (lib) mkEnableOption mkOption mkIf types;
49
      cfg = config.services.xserver.windowManager.oxwm;
50
    in {
51
      options.services.xserver.windowManager.oxwm = {
52
        enable = mkEnableOption "oxwm window manager";
53
        package = mkOption {
54
          type = types.package;
55
          default = self.packages.${pkgs.system}.default;
56
          description = "The oxwm package to use";
57
        };
58
      };
59
60
      config = mkIf cfg.enable {
61
        services.displayManager.sessionPackages = [cfg.package];
62
63
        environment.systemPackages = [
64
          cfg.package
65
        ];
66
      };
67
    };
68
  };
69
}