diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..2a54f7a --- /dev/null +++ b/flake.lock @@ -0,0 +1,64 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1755615617, + "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "20075955deac2583bb12f07151c2df830ef346b4", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1753595452, + "narHash": "sha256-vqkSDvh7hWhPvNjMjEDV4KbSCv2jyl2Arh73ZXe274k=", + "ref": "refs/heads/master", + "rev": "a5431dd02dc23d9ef1680e67777fed00fe5f7cda", + "revCount": 665, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "quickshell": "quickshell", + "systems": "systems" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..7025c70 --- /dev/null +++ b/flake.nix @@ -0,0 +1,35 @@ +{ + description = "Desktop shell for Caelestia dots"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + systems.url = "github:nix-systems/default"; + + quickshell = { + url = "git+https://git.outfoxxed.me/outfoxxed/quickshell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { + self, + nixpkgs, + systems, + ... + } @ inputs: let + eachSystem = nixpkgs.lib.genAttrs (import systems); + in { + formatter = eachSystem (pkgs: pkgs.alejandra); + + packages = eachSystem (system: rec { + noctalia-shell = nixpkgs.legacyPackages.${system}.callPackage ./nix { + rev = self.rev or self.dirtyRev; + quickshell = inputs.quickshell.packages.${system}.default.override { + withX11 = false; + withI3 = false; + }; + }; + default = noctalia-shell; + }); + }; +} diff --git a/nix/default.nix b/nix/default.nix new file mode 100644 index 0000000..978fb74 --- /dev/null +++ b/nix/default.nix @@ -0,0 +1,96 @@ +{ + rev, + lib, + stdenv, + makeWrapper, + makeFontsConf, + fish, + ddcutil, + brightnessctl, + cava, + networkmanager, + lm_sensors, + wl-clipboard, + libqalculate, + inotify-tools, + bluez, + bash, + hyprland, + coreutils, + findutils, + file, + material-symbols, + roboto-serif, + roboto-slab, + roboto-mono, + roboto-flex, + inter-nerdfont, + matugen, + cliphist, + gpu-screen-recorder, + gcc, + qt6, + quickshell, + xkeyboard-config, + extraRuntimeDeps ? [], +}: let + runtimeDeps = + [ + fish + ddcutil + brightnessctl + cava + networkmanager + lm_sensors + wl-clipboard + libqalculate + matugen + cliphist + gpu-screen-recorder + inotify-tools + bluez + bash + hyprland + coreutils + findutils + file + ] + ++ extraRuntimeDeps; + + fontconfig = makeFontsConf { + fontDirectories = [ + material-symbols + roboto-serif + roboto-slab + roboto-mono + roboto-flex + inter-nerdfont + ]; + }; +in + stdenv.mkDerivation { + pname = "noctalia-shell"; + version = "${rev}"; + src = ./..; + + nativeBuildInputs = [gcc makeWrapper qt6.wrapQtAppsHook]; + buildInputs = [quickshell xkeyboard-config qt6.qtbase]; + propagatedBuildInputs = runtimeDeps; + + installPhase = '' + mkdir -p $out/share/noctalia-shell + cp -r ./* $out/share/noctalia-shell + + makeWrapper ${quickshell}/bin/qs $out/bin/noctalia-shell \ + --prefix PATH : "${lib.makeBinPath runtimeDeps}" \ + --set FONTCONFIG_FILE "${fontconfig}" \ + --add-flags "-p $out/share/noctalia-shell" + ''; + + meta = { + description = "A sleek and minimal desktop shell thoughtfully crafted for Wayland, built with Quickshell."; + homepage = "https://github.com/noctalia-dev/noctalia-shell"; + license = lib.licenses.mit; + mainProgram = "noctalia-shell"; + }; + }