oxwm

https://git.tonybtw.com/oxwm.git git://git.tonybtw.com/oxwm.git
1,953 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
        # use git rev for non tagged releases
17
        gitRev = self.rev or self.dirtyRev or null;
18
      };
19
      oxwm = default;
20
    });
21
22
    devShells = forAllSystems (pkgs: {
23
      default = pkgs.mkShell {
24
        buildInputs = [
25
          pkgs.rustc
26
          pkgs.cargo
27
          pkgs.alacritty
28
          pkgs.just
29
          pkgs.xorg.xorgserver
30
          pkgs.xorg.libX11
31
          pkgs.xorg.libXft
32
          pkgs.xorg.libXrender
33
          pkgs.freetype
34
          pkgs.fontconfig
35
          pkgs.pkg-config
36
        ];
37
        shellHook = ''
38
          export PS1="(oxwm-dev) $PS1"
39
        '';
40
        RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}";
41
      };
42
    });
43
44
    formatter = forAllSystems (pkgs: pkgs.alejandra);
45
46
    nixosModules.default = {
47
      config,
48
      lib,
49
      pkgs,
50
      ...
51
    }: let
52
      inherit (lib) mkEnableOption mkOption mkIf types;
53
      cfg = config.services.xserver.windowManager.oxwm;
54
    in {
55
      options.services.xserver.windowManager.oxwm = {
56
        enable = mkEnableOption "oxwm window manager";
57
        package = mkOption {
58
          type = types.package;
59
          default = self.packages.${pkgs.system}.default;
60
          description = "The oxwm package to use";
61
        };
62
      };
63
64
      config = mkIf cfg.enable {
65
        services.displayManager.sessionPackages = [cfg.package];
66
67
        environment.systemPackages = [
68
          cfg.package
69
        ];
70
71
        environment.pathsToLink = [
72
          "/share/oxwm"
73
          "/share/xsessions"
74
        ];
75
      };
76
    };
77
  };
78
}