Wayland support for clipboard

This commit is contained in:
Javier Feliz 2025-08-13 17:53:04 -04:00
parent ef49856afc
commit f4172e58c7
11 changed files with 317 additions and 177 deletions

BIN
assets/sddm-background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 MiB

BIN
assets/user-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

View File

@ -8,7 +8,8 @@
imports = [
./hardware-configuration.nix
./system/nvidia.nix
./system/de/gdm.nix
# ./system/de/gdm.nix
./system/de/sddm.nix
./system/de/hypr/hyprland.nix
./system/nfs.nix
./system/fonts.nix
@ -90,6 +91,13 @@
"wheel"
];
};
# Set up my user icon
environment.etc."avatars/javi.png".source = ./assets/user-icon.png;
system.activationScripts.avatar = ''
mkdir -p /var/lib/AccountsService/icons
ln -sf /etc/avatars/javi.png /var/lib/AccountsService/icons/javi
'';
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
@ -97,7 +105,6 @@
# $ nix search wget
environment.systemPackages = with pkgs; [
brave
neovim
git
openssh
pkgs.ntfs3g

223
flake.lock generated
View File

@ -83,7 +83,81 @@
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1754487366,
"narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"neovim-nightly-overlay",
"hercules-ci-effects",
"nixpkgs"
]
},
"locked": {
"lastModified": 1751413152,
"narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "77826244401ea9de6e3bac47c2db46005e1f30b5",
"type": "github"
},
"original": {
"id": "flake-parts",
"type": "indirect"
}
},
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"stylix",
@ -120,6 +194,51 @@
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": [
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1754416808,
"narHash": "sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef+6fRcofA=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "9c52372878df6911f9afc1e2a1391f55e4dfc864",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"neovim-nightly-overlay",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gnome-shell": {
"flake": false,
"locked": {
@ -137,6 +256,28 @@
"type": "github"
}
},
"hercules-ci-effects": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1752595130,
"narHash": "sha256-CNBgr4OZSuklGtNOa9CnTNo9+Xceqn/EDAC1Tc43fH8=",
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"rev": "5f2e09654b2e70ba643e41609d9f9b6640f22113",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -175,6 +316,46 @@
"url": "https://gitgud.foo/thegrind/hypr-shell.git"
}
},
"neovim-nightly-overlay": {
"inputs": {
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"git-hooks": "git-hooks",
"hercules-ci-effects": "hercules-ci-effects",
"neovim-src": "neovim-src",
"nixpkgs": "nixpkgs_2",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1755033072,
"narHash": "sha256-KQ5qgugljc44XtEVmGzRdBwTDIqARCM3b/9dRsEBZIk=",
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"rev": "3cf910c2727eed304b8aabcfddc109e0c0371bfb",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"type": "github"
}
},
"neovim-src": {
"flake": false,
"locked": {
"lastModified": 1754951943,
"narHash": "sha256-jDrRkJQ+iDDAZn+8bi6lxumSNUwgdyFgJVTzVwz1lIM=",
"owner": "neovim",
"repo": "neovim",
"rev": "a26cdcb20e68f38f636b14a03c3f9657f5c74f67",
"type": "github"
},
"original": {
"owner": "neovim",
"repo": "neovim",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1754725699,
@ -192,6 +373,22 @@
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1754800730,
"narHash": "sha256-HfVZCXic9XLBgybP0318ym3cDnGwBs/+H5MgxFVYF4I=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "641d909c4a7538f1539da9240dedb1755c907e40",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1754498491,
"narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=",
@ -236,7 +433,8 @@
"inputs": {
"home-manager": "home-manager",
"hyprshell": "hyprshell",
"nixpkgs": "nixpkgs_2",
"neovim-nightly-overlay": "neovim-nightly-overlay",
"nixpkgs": "nixpkgs_3",
"stylix": "stylix"
}
},
@ -247,7 +445,7 @@
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts",
"flake-parts": "flake-parts_3",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"
@ -369,6 +567,27 @@
"repo": "base16-zed",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1754847726,
"narHash": "sha256-2vX8QjO5lRsDbNYvN9hVHXLU6oMl+V/PsmIiJREG4rE=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "7d81f6fb2e19bf84f1c65135d1060d829fae2408",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",

View File

@ -12,6 +12,7 @@
url = "github:danth/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
};
outputs =
@ -23,6 +24,9 @@
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
overlays = [
inputs.neovim-nightly-overlay.overlays.default
];
in
{
nixosConfigurations.default = nixpkgs.lib.nixosSystem {

View File

@ -13,6 +13,7 @@
./home/git.nix
./home/hyprland.nix
./home/util/darkmode.nix
./home/neovim.nix
];
nixpkgs.config.allowUnfree = true;
# Home Manager needs a bit of information about you and the paths it should
@ -46,7 +47,6 @@
# Dev tools
jetbrains.datagrip
vscode
neovim
nixfmt # Nix formatting
pkgs.libsForQt5.full # QML formatting (for working on quickshell)

View File

@ -32,6 +32,9 @@
# Desktop env
hyprpanel
# Utility
wl-clipboard
];
# Important for certain apps working

13
home/neovim.nix Normal file
View File

@ -0,0 +1,13 @@
# neovim.nix
{
config,
pkgs,
inputs,
...
}:
{
home.packages = [
inputs.neovim-nightly-overlay.packages.${pkgs.system}.default
];
}

View File

@ -51,7 +51,7 @@
home = "cd ~";
projects = "cd ~/projects";
co = "code .";
clipboard = "xclip -selection clipboard";
clipboard = "wl-copy";
# Jigsaw
jig = "vendor/bin/jigsaw";

View File

@ -14,171 +14,31 @@
enableBashIntegration = true;
enableZshIntegration = true;
# settings = {
# # Main prompt format
# format = ''
# $username$hostname$directory$git_branch$git_status$nodejs$php$go$python$docker_context$nix_shell
# $character
# '';
#
# # Right side format
# right_format = "$cmd_duration$time";
#
# # Character (prompt indicator)
# character = {
# success_symbol = "[](bold green)";
# error_symbol = "[](bold red)";
# vicmd_symbol = "[](bold yellow)";
# };
#
# # Directory
# directory = {
# style = "bold cyan";
# truncation_length = 3;
# truncate_to_repo = false;
# format = "[$path]($style)[$lock_symbol]($lock_style) ";
# };
#
# # Git branch
# git_branch = {
# style = "bold purple";
# format = "on [$symbol$branch]($style) ";
# symbol = " ";
# };
#
# # Git status
# git_status = {
# style = "red";
# ahead = "⇡\${count}";
# diverged = "⇕⇡\${ahead_count}⇣\${behind_count}";
# behind = "⇣\${count}";
# conflicted = "=";
# deleted = "✘";
# modified = "!";
# renamed = "»";
# staged = "+";
# stashed = "$";
# untracked = "?";
# format = "([$all_status$ahead_behind]($style))";
# };
#
# # Username
# username = {
# style_user = "bold yellow";
# style_root = "bold red";
# format = "[$user]($style) ";
# disabled = false;
# show_always = false;
# };
#
# # Hostname
# hostname = {
# ssh_only = false;
# format = "[@$hostname]($style) ";
# style = "bold green";
# disabled = true;
# };
#
# # Language versions
# nodejs = {
# style = "bold green";
# format = "via [$symbol($version)]($style) ";
# symbol = " ";
# detect_extensions = ["js" "mjs" "cjs" "ts" "tsx" "vue"];
# detect_files = ["package.json" "package-lock.json" "yarn.lock"];
# };
#
# php = {
# style = "bold blue";
# format = "via [$symbol($version)]($style) ";
# symbol = " ";
# detect_extensions = ["php"];
# detect_files = ["composer.json" "composer.lock"];
# };
#
# go = {
# style = "bold cyan";
# format = "via [$symbol($version)]($style) ";
# symbol = " ";
# detect_extensions = ["go"];
# detect_files = ["go.mod" "go.sum"];
# };
#
# python = {
# style = "bold yellow";
# format = "via [$symbol$pyenv_prefix($version)]($style) ";
# symbol = " ";
# detect_extensions = ["py"];
# detect_files = ["requirements.txt" "pyproject.toml" "Pipfile"];
# };
#
# # Docker
# docker_context = {
# style = "blue bold";
# format = "via [$symbol$context]($style) ";
# symbol = " ";
# only_with_files = true;
# detect_files = ["docker-compose.yml" "docker-compose.yaml" "Dockerfile"];
# };
#
# # Nix shell
# nix_shell = {
# style = "bold blue";
# format = "via [$symbol$state( \\($name\\))]($style) ";
# symbol = "❄️ ";
# impure_msg = "[impure shell](bold red)";
# pure_msg = "[pure shell](bold green)";
# unknown_msg = "[unknown shell](bold yellow)";
# };
#
# # Command duration
# cmd_duration = {
# min_time = 2000;
# style = "bold yellow";
# format = "took [$duration]($style) ";
# };
#
# # Time
# time = {
# disabled = false;
# style = "bold white";
# format = "[$time]($style)";
# time_format = "%T";
# utc_time_offset = "local";
# };
#
# # Status
# status = {
# style = "bg:blue";
# symbol = "🔴";
# format = "[\\[$symbol $common_meaning$signal_name$maybe_int\\]]($style) ";
# map_symbol = true;
# disabled = false;
# };
#
# # Memory usage
# memory_usage = {
# disabled = false;
# threshold = 70;
# style = "bold dimmed white";
# format = "via $symbol[${ram}( | ${swap})]($style) ";
# symbol = " ";
# };
#
# # Package version
# package = {
# disabled = false;
# style = "208 bold";
# format = "is [$symbol$version]($style) ";
# symbol = "📦 ";
# };
#
# # AWS
# aws = {
# style = "bold orange";
# format = "on [$symbol($profile)(\\($region\\))(\\[$duration\\])]($style) ";
# symbol = "☁️ ";
# };
# };
settings = {
character = {
success_symbol = "[Ǽ ](bold green)";
error_symbol = "[Ǿ ](bold red)";
};
directory = {
truncation_length = 9;
};
php = {
format = "[$symbol($version )]($style)";
};
golang = {
format = "[$symbol($version )]($style)";
};
nodejs = {
format = "[$symbol($version )]($style)";
};
bun = {
format = "[$symbol($version )]($style)";
};
};
};
}

View File

@ -4,12 +4,46 @@
inputs,
...
}:
let
basePath = "/home/javi/Documents/wallpapers";
wallpaper = "Fantasy-Mountain.png";
in
{
services.xserver = {
environment.etc."sddm-wallpaper.png".source = ../../assets/sddm-background.png;
environment.systemPackages = with pkgs; [
(sddm-chili-theme.override {
themeConfig = {
background = "/etc/sddm-wallpaper.png";
ScreenWidth = "3440";
ScreenHeight = "1440";
recursiveBlurLoops = 1;
recursiveBlurRadius = 10;
};
})
libsForQt5.qt5.qtgraphicaleffects
papirus-icon-theme
];
programs.dconf.enable = true;
environment.etc."gtk-3.0/settings.ini".text = ''
[Settings]
gtk-icon-theme-name=Papirus
gtk-theme-name=Adwaita
gtk-cursor-theme-name=Adwaita
'';
services.displayManager.sddm = {
enable = true;
displayManager.sddm = {
enable = true;
wayland.enable = true;
};
wayland.enable = true;
theme = "chili";
autoNumlock = true;
package = pkgs.libsForQt5.sddm;
extraPackages = with pkgs.libsForQt5.qt5; [
qtgraphicaleffects
qtquickcontrols2
qtquickcontrols
qtsvg
qtdeclarative # QtQuick core
];
};
}