diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore index 8723b9e..a77eaef 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ dwm-msg config.h patches.h .legacy/ +.direnv/ diff --git a/default.nix b/default.nix deleted file mode 100644 index 88cef4f..0000000 --- a/default.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ stdenv, fetchurl, libX11, libXft, libXinerama }: - -stdenv.mkDerivation { - name = "dwm-HEAD"; - - src = builtins.filterSource - (path: type: (toString path) != (toString ./.git)) ./.; - - buildInputs = [ libX11 libXft libXinerama ]; - - prePatch = '' - substituteInPlace config.mk --replace '/usr/local' $out - ''; - - meta = with stdenv.lib; { - description = "Dynamic window manager for X"; - homepage = http://dwm.suckless.org/; - license = licenses.mit; - platforms = platforms.all; - }; -} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..d6aeab8 --- /dev/null +++ b/flake.lock @@ -0,0 +1,23 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 0, + "narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=", + "path": "/nix/store/8fwsiv0hd7nw1brkvka0jf1frk3m7qkr-source", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..8a2ebbf --- /dev/null +++ b/flake.nix @@ -0,0 +1,46 @@ +{ + outputs = { self, nixpkgs }: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in { + packages.${system}.dwm = pkgs.stdenv.mkDerivation rec { + pname = "dwm"; + version = "custom"; + src = ./.; + + buildInputs = with pkgs; [ + xorg.libX11 + xorg.libXft + xorg.libXinerama + ]; + + makeFlags = [ "CC=${pkgs.gcc}/bin/gcc" ]; + + installPhase = '' + mkdir -p $out/bin + cp dwm $out/bin/ + ''; + + meta = with pkgs.lib; { + description = "Dynamic Window Manager"; + license = licenses.mit; + maintainers = [ ]; + }; + }; + + devShells.${system}.default = pkgs.mkShell { + buildInputs = with pkgs; [ + gnumake + gcc + xorg.libX11 + xorg.libX11.dev + xorg.libXft + xorg.libXinerama + ]; + + shellHook = '' + echo "Development shell for dwm ready." + ''; + }; + }; +}