From f84333b9a5ec12e5fb2549c8ead16f6ae0a8fb49 Mon Sep 17 00:00:00 2001 From: Wroclaw Date: Fri, 8 Mar 2024 09:06:58 +0100 Subject: [PATCH] Cosmic: init this desktop environment is still in alpha (or pre alpha) --- nix-os-configs/vm-cosmic.nix | 17 ++++++++++++ nix-os/desktop/cosmic.nix | 51 ++++++++++++++++++++++++++++++++++++ vm-cosmic.sh | 1 + 3 files changed, 69 insertions(+) create mode 100644 nix-os-configs/vm-cosmic.nix create mode 100644 nix-os/desktop/cosmic.nix create mode 100755 vm-cosmic.sh diff --git a/nix-os-configs/vm-cosmic.nix b/nix-os-configs/vm-cosmic.nix new file mode 100644 index 0000000..a7a0c4d --- /dev/null +++ b/nix-os-configs/vm-cosmic.nix @@ -0,0 +1,17 @@ +{ ... }: + +{ + imports = [ + ../nix-os/core.nix + ../nix-os/docker.nix + ../nix-os/desktop/cosmic.nix + #../nix-os/desktop/kde-plasma.nix + ../nix-os/shell.nix + ../nix-os/virtualization.nix + ../nix-os/polkit/disable-shutdown.nix + ../nix-os/locale.nix + ../nix-os/adb.nix + ../nix-os/account.nix + ../nix-os/xdg-default-apps.nix + ]; +} \ No newline at end of file diff --git a/nix-os/desktop/cosmic.nix b/nix-os/desktop/cosmic.nix new file mode 100644 index 0000000..a2ee1f5 --- /dev/null +++ b/nix-os/desktop/cosmic.nix @@ -0,0 +1,51 @@ +{pkgs, lib, ... }: + +let + nixos-cosmic = builtins.fetchGit { + url = "https://github.com/lilyinstarlight/nixos-cosmic.git"; + # rev = "c1f1dc29d6c187fd563776837ab53faafa111721"; + }; + cosmicModule = import "${nixos-cosmic}" {system = "x86_64-linux";}; + cosmicPkgsMainDir = builtins.readDir "${nixos-cosmic}/pkgs"; + cosmicPkgsDirs = builtins.filter (v: cosmicPkgsMainDir."${v}" == "directory") (builtins.attrNames cosmicPkgsMainDir); + cosmicPkgsOverlay = final: prev: builtins.listToAttrs ( + builtins.map (v: {name = v; value = final.callPackage "${nixos-cosmic}/pkgs/${v}/package.nix" {};}) cosmicPkgsDirs + ); +in +{ + imports = [ + cosmicModule + "${nixos-cosmic}/nixos/cosmic-greeter/module.nix" + "${nixos-cosmic}/nixos/cosmic/module.nix" + ]; + config = { + services.xserver.desktopManager.cosmic.enable = true; + services.xserver.displayManager.cosmic-greeter.enable = true; + nixpkgs.overlays = [ cosmicPkgsOverlay ]; + }; + options = { + cosmic-applets = lib.mkOption {default = pkgs.cosmic-applets;}; + cosmic-applibrary = lib.mkOption {default = pkgs.cosmic-applibrary;}; + cosmic-bg = lib.mkOption {default = pkgs.cosmic-bg;}; + cosmic-comp = lib.mkOption {default = pkgs.cosmic-comp;}; + cosmic-design-demo = lib.mkOption {default = pkgs.cosmic-design;}; + cosmic-edit = lib.mkOption {default = pkgs.cosmic-edit;}; + cosmic-files = lib.mkOption {default = pkgs.cosmic-files;}; + cosmic-greeter = lib.mkOption {default = pkgs.cosmic-greeter;}; + cosmic-icons = lib.mkOption {default = pkgs.cosmic-icons;}; + cosmic-launcher = lib.mkOption {default = pkgs.cosmic-launcher;}; + cosmic-notifications = lib.mkOption {default = pkgs.cosmic-notifications;}; + cosmic-osd = lib.mkOption {default = pkgs.cosmic-osd;}; + cosmic-panel = lib.mkOption {default = pkgs.cosmic-panel;}; + cosmic-protocols = lib.mkOption {default = pkgs.cosmic-protocols;}; + cosmic-randr = lib.mkOption {default = pkgs.cosmic-randr;}; + cosmic-screenshot = lib.mkOption {default = pkgs.cosmic-screenshot;}; + cosmic-session = lib.mkOption {default = pkgs.cosmic-session;}; + cosmic-settings = lib.mkOption {default = pkgs.cosmic-settings;}; + cosmic-settings-daemon = lib.mkOption {default = pkgs.cosmic-settings;}; + cosmic-term = lib.mkOption {default = pkgs.cosmic-term;}; + cosmic-workspaces-epoch = lib.mkOption {default = pkgs.cosmic-workspaces;}; + wrapCosmicAppsHook = lib.mkOption {default = pkgs.wrapCosmicAppsHook;}; + xdg-desktop-portal-cosmic = lib.mkOption {default = pkgs.xdg-desktop-portal-cosmic;}; + }; +} diff --git a/vm-cosmic.sh b/vm-cosmic.sh new file mode 100755 index 0000000..b03a0df --- /dev/null +++ b/vm-cosmic.sh @@ -0,0 +1 @@ +nix-build '' -A vm -I nixpkgs=channel:nixos-unstable -I nixos-config=./nix-os-configs/vm-cosmic.nix $@ && $(ls ./result/bin/run-*) -m 4096 && rm *.qcow2