oxwm

https://git.tonybtw.com/oxwm.git git://git.tonybtw.com/oxwm.git
2,276 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
        inputsFrom = [self.packages.${pkgs.stdenv.hostPlatform.system}.oxwm];
25
        packages = [
26
          pkgs.zig
27
          pkgs.zls
28
          pkgs.alacritty
29
          pkgs.xorg-server
30
        ];
31
        shellHook = ''
32
          export PS1="(oxwm-dev) $PS1"
33
        '';
34
      };
35
    });
36
37
    formatter = forAllSystems (pkgs: pkgs.alejandra);
38
39
    nixosModules.default = {
40
      config,
41
      lib,
42
      pkgs,
43
      ...
44
    }: let
45
      inherit (lib) mkEnableOption mkOption mkIf types;
46
      cfg = config.services.xserver.windowManager.oxwm;
47
    in {
48
      options.services.xserver.windowManager.oxwm = {
49
        enable = mkEnableOption "oxwm window manager";
50
        package = mkOption {
51
          type = types.package;
52
          default = self.packages.${pkgs.stdenv.hostPlatform.system}.default;
53
          description = "The oxwm package to use";
54
        };
55
        extraSessionCommands = mkOption {
56
          type = types.lines;
57
          default = "";
58
          description = "Shell commands executed just before oxwm is started";
59
        };
60
      };
61
62
      config = mkIf cfg.enable {
63
        services.xserver.windowManager.session = lib.singleton {
64
          name = "oxwm";
65
          start = ''
66
            ${cfg.extraSessionCommands}
67
            export _JAVA_AWT_WM_NONREPARENTING=1
68
            ${cfg.package}/bin/oxwm &
69
            waitPID=$!
70
          '';
71
        };
72
73
        environment.systemPackages = [
74
          cfg.package
75
        ];
76
77
        environment.pathsToLink = [
78
          "/share/oxwm"
79
          "/share/xsessions"
80
        ];
81
      };
82
    };
83
84
    homeManagerModules.default = import ./hm.nix { inherit self; };
85
  };
86
}