added wayvnc config
This commit is contained in:
64
flake.lock
generated
64
flake.lock
generated
@@ -7,11 +7,11 @@
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-16SMbNTMTa+acgZVO0MihmuQonvLo4Oy24fSzNvBKLw=",
|
||||
"path": "/nix/store/2byyf4br6i1v2lx9gvgv9gsg6jv2wfyn-source/ags",
|
||||
"path": "/nix/store/g1fw4rpkw67mww668mxj05zmbd0ks8mv-source/ags",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/2byyf4br6i1v2lx9gvgv9gsg6jv2wfyn-source/ags",
|
||||
"path": "/nix/store/g1fw4rpkw67mww668mxj05zmbd0ks8mv-source/ags",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -215,11 +215,11 @@
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-SakyZnAhoToQmui5hozmLqkoLw6N/AHCgKF4tCP/sTQ=",
|
||||
"path": "/nix/store/nb4nq461dir7sa4g5jc1s61k5qfflamx-source/disko",
|
||||
"path": "/nix/store/6s00j648bcxmibrx5b63jinlszwz2c3p-source/disko",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/nb4nq461dir7sa4g5jc1s61k5qfflamx-source/disko",
|
||||
"path": "/nix/store/6s00j648bcxmibrx5b63jinlszwz2c3p-source/disko",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -664,11 +664,11 @@
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-FbSB/VPF1F8BjjGejCs9hzRK4uo5RNMoIdMdl58mEFM=",
|
||||
"path": "/nix/store/2byyf4br6i1v2lx9gvgv9gsg6jv2wfyn-source/hyprland",
|
||||
"path": "/nix/store/g1fw4rpkw67mww668mxj05zmbd0ks8mv-source/hyprland",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/2byyf4br6i1v2lx9gvgv9gsg6jv2wfyn-source/hyprland",
|
||||
"path": "/nix/store/g1fw4rpkw67mww668mxj05zmbd0ks8mv-source/hyprland",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1029,11 +1029,11 @@
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-7ipphehm+qDglyyFxGz2ZYf9uNbXCohPCFAGSI2QMb8=",
|
||||
"path": "/nix/store/nb4nq461dir7sa4g5jc1s61k5qfflamx-source/impermanence",
|
||||
"path": "/nix/store/6s00j648bcxmibrx5b63jinlszwz2c3p-source/impermanence",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/nb4nq461dir7sa4g5jc1s61k5qfflamx-source/impermanence",
|
||||
"path": "/nix/store/6s00j648bcxmibrx5b63jinlszwz2c3p-source/impermanence",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1058,12 +1058,12 @@
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-jR1BIfyY+rRVIZkzMOT5PK5PLvH5hoWwviq0GE6pY4w=",
|
||||
"path": "/nix/store/h9gv682ppvibhvnvjgxx58acg6342lin-source/home",
|
||||
"narHash": "sha256-ZyBMoOzPcntdRnVs747cLUB8yJylCdecHAtE/tWh5W8=",
|
||||
"path": "/nix/store/j1jldl7nr35ghyvd0wpxr5bdnkdmd05s-source/home",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/h9gv682ppvibhvnvjgxx58acg6342lin-source/home",
|
||||
"path": "/nix/store/j1jldl7nr35ghyvd0wpxr5bdnkdmd05s-source/home",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1434,11 +1434,11 @@
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-B01IL6PFTcOaiaVsj3GnvmKb1Mc+PsajyoBSU7UE9zU=",
|
||||
"path": "/nix/store/pq1ql9bpk85l01kmr4k074mh1q0rsqcf-source/packages",
|
||||
"path": "/nix/store/i085fcv2ckidpfzaif16vxj1xqify10l-source/packages",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/pq1ql9bpk85l01kmr4k074mh1q0rsqcf-source/packages",
|
||||
"path": "/nix/store/i085fcv2ckidpfzaif16vxj1xqify10l-source/packages",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1449,11 +1449,11 @@
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-6oCDKhDSqJMWeODXDHD5XorN7/+KXBBIPZ2z+obwUNY=",
|
||||
"path": "/nix/store/nb4nq461dir7sa4g5jc1s61k5qfflamx-source/packages",
|
||||
"path": "/nix/store/6s00j648bcxmibrx5b63jinlszwz2c3p-source/packages",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/nb4nq461dir7sa4g5jc1s61k5qfflamx-source/packages",
|
||||
"path": "/nix/store/6s00j648bcxmibrx5b63jinlszwz2c3p-source/packages",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1522,12 +1522,12 @@
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-9L+1TDE6MNQVXd8Z869oLwjS3khchgAhhG+KCjPo4jc=",
|
||||
"path": "/nix/store/pq1ql9bpk85l01kmr4k074mh1q0rsqcf-source/programs",
|
||||
"narHash": "sha256-+axyKmwg35iHQFbYCj0tW6XQ9ncPM3FfqO2maASdI0A=",
|
||||
"path": "/nix/store/i085fcv2ckidpfzaif16vxj1xqify10l-source/programs",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/pq1ql9bpk85l01kmr4k074mh1q0rsqcf-source/programs",
|
||||
"path": "/nix/store/i085fcv2ckidpfzaif16vxj1xqify10l-source/programs",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1539,11 +1539,11 @@
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-hg0wqQn6BxQXLmfBINzZoaWpdSIlwwZxKbYz+4df83o=",
|
||||
"path": "/nix/store/nb4nq461dir7sa4g5jc1s61k5qfflamx-source/programs",
|
||||
"path": "/nix/store/6s00j648bcxmibrx5b63jinlszwz2c3p-source/programs",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/nb4nq461dir7sa4g5jc1s61k5qfflamx-source/programs",
|
||||
"path": "/nix/store/6s00j648bcxmibrx5b63jinlszwz2c3p-source/programs",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1556,12 +1556,12 @@
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-pqaq1rt9VZUm7XhlyQn7IH/+9vpAK/KUq2J7FlGs+dE=",
|
||||
"path": "/nix/store/2byyf4br6i1v2lx9gvgv9gsg6jv2wfyn-source/pywal",
|
||||
"narHash": "sha256-4mwfSmoMooqMRTneT8F0xdoHx1iVhja0VVJFmecj1+s=",
|
||||
"path": "/nix/store/g1fw4rpkw67mww668mxj05zmbd0ks8mv-source/pywal",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/2byyf4br6i1v2lx9gvgv9gsg6jv2wfyn-source/pywal",
|
||||
"path": "/nix/store/g1fw4rpkw67mww668mxj05zmbd0ks8mv-source/pywal",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1585,11 +1585,11 @@
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-TsMqdRC5Rsop/6ASLtAFJc0Spt9NI8iQBk6dXxJ8mYA=",
|
||||
"path": "/nix/store/2byyf4br6i1v2lx9gvgv9gsg6jv2wfyn-source/rofi",
|
||||
"path": "/nix/store/g1fw4rpkw67mww668mxj05zmbd0ks8mv-source/rofi",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/2byyf4br6i1v2lx9gvgv9gsg6jv2wfyn-source/rofi",
|
||||
"path": "/nix/store/g1fw4rpkw67mww668mxj05zmbd0ks8mv-source/rofi",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1670,11 +1670,11 @@
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-Iek5h97Tc3MjuiLMbHC+K1bOk8QO5UCC5ZXG46erGzc=",
|
||||
"path": "/nix/store/nb4nq461dir7sa4g5jc1s61k5qfflamx-source/services",
|
||||
"path": "/nix/store/6s00j648bcxmibrx5b63jinlszwz2c3p-source/services",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/nb4nq461dir7sa4g5jc1s61k5qfflamx-source/services",
|
||||
"path": "/nix/store/6s00j648bcxmibrx5b63jinlszwz2c3p-source/services",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1688,12 +1688,12 @@
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-MHLXxQGzz62LRi8jmBQESoeCfH3BKGBOWplfb3UFFTU=",
|
||||
"path": "/nix/store/h9gv682ppvibhvnvjgxx58acg6342lin-source/system",
|
||||
"narHash": "sha256-FtmMe4X6qOHE4q8v4bwsHIvhA3Ll1T96UhkYuWF+dlQ=",
|
||||
"path": "/nix/store/j1jldl7nr35ghyvd0wpxr5bdnkdmd05s-source/system",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/h9gv682ppvibhvnvjgxx58acg6342lin-source/system",
|
||||
"path": "/nix/store/j1jldl7nr35ghyvd0wpxr5bdnkdmd05s-source/system",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
@@ -1770,11 +1770,11 @@
|
||||
"locked": {
|
||||
"lastModified": 1,
|
||||
"narHash": "sha256-2h0M0hXa3L6rQJ2hmDadiZBYJcoxRqFdlXD7tK0LFrM=",
|
||||
"path": "/nix/store/2byyf4br6i1v2lx9gvgv9gsg6jv2wfyn-source/terminal",
|
||||
"path": "/nix/store/g1fw4rpkw67mww668mxj05zmbd0ks8mv-source/terminal",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "/nix/store/2byyf4br6i1v2lx9gvgv9gsg6jv2wfyn-source/terminal",
|
||||
"path": "/nix/store/g1fw4rpkw67mww668mxj05zmbd0ks8mv-source/terminal",
|
||||
"type": "path"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -34,8 +34,10 @@
|
||||
|
||||
homeconfig = {
|
||||
calcurse.enable = true;
|
||||
wayvnc.enable = false;
|
||||
rofi.enable = true;
|
||||
mpd.enable = true;
|
||||
wal.enable = true;
|
||||
ags.enable = true;
|
||||
hyprland.enable = true;
|
||||
};
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
inputs.pywal.hmModule
|
||||
./swaylock
|
||||
./calcurse
|
||||
./wayvnc
|
||||
];
|
||||
|
||||
home.packages = [
|
||||
|
||||
@@ -31,11 +31,7 @@
|
||||
|
||||
in {
|
||||
|
||||
hmModule = { config, lib, pkgs, ... }: let
|
||||
pywalfox-wrapper = pkgs.writeShellScriptBin "pywalfox-wrapper" ''
|
||||
${pkgs.pywalfox-native}/bin/pywalfox start
|
||||
'';
|
||||
in {
|
||||
hmModule = { config, lib, pkgs, ... }:{
|
||||
|
||||
imports = [
|
||||
inputs.spicetify-nix.homeManagerModules.default
|
||||
@@ -46,7 +42,11 @@
|
||||
default = false;
|
||||
};
|
||||
|
||||
config = lib.mkIf config.homeconfig.wal.enable {
|
||||
config = let
|
||||
pywalfox-wrapper = pkgs.writeShellScriptBin "pywalfox-wrapper" ''
|
||||
${pkgs.pywalfox-native}/bin/pywalfox start
|
||||
'';
|
||||
in lib.mkIf config.homeconfig.wal.enable {
|
||||
|
||||
programs.spicetify = let
|
||||
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
|
||||
@@ -56,10 +56,10 @@
|
||||
theme = spicePkgs.themes.default;
|
||||
enabledExtensions = with spicePkgs.extensions; [
|
||||
({
|
||||
src = "${inputs.spicetify-ext}/adblock";
|
||||
name = "adblock.js";
|
||||
})
|
||||
copyToClipboard
|
||||
src = "${inputs.spicetify-ext}/adblock";
|
||||
name = "adblock.js";
|
||||
})
|
||||
copyToClipboard
|
||||
oneko
|
||||
#randomBadToTheBoneRiff #this could be hilarious
|
||||
];
|
||||
|
||||
22
home/programs/wayvnc/default.nix
Normal file
22
home/programs/wayvnc/default.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ config, lib, pkgs, ... }: {
|
||||
|
||||
options.homeconfig.wayvnc.enable = lib.options.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
};
|
||||
|
||||
config = lib.mkIf config.homeconfig.wayvnc.enable {
|
||||
home.packages = with pkgs; [
|
||||
wayvnc
|
||||
];
|
||||
|
||||
home.file.".config/wayvnc/config".txt = ''
|
||||
use_relative_paths=true
|
||||
address=0.0.0.0
|
||||
enable_auth=true
|
||||
username=nathan
|
||||
password=//falconAdjacent42
|
||||
rsa_private_key_file=rsa_key.pem
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -9,12 +9,54 @@
|
||||
sysconfig.laptop.enable = lib.mkDefault false;
|
||||
sysconfig.homebox.enable = lib.mkDefault false;
|
||||
sysconfig.generic.enable = lib.mkDefault true;
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/Chicago";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "en_US.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "en_US.UTF-8";
|
||||
LC_PAPER = "en_US.UTF-8";
|
||||
LC_TELEPHONE = "en_US.UTF-8";
|
||||
LC_TIME = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.${config.sysconfig.opts.username} = {
|
||||
isNormalUser = true;
|
||||
description = "Nathan";
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"adbusers"
|
||||
#school?
|
||||
"plugdev"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
networking = {
|
||||
hostName = config.sysconfig.opts.host;
|
||||
nameservers = [ "1.1.1.1#one.one.one.one" "1.0.0.1#one.one.one.one" ];
|
||||
networkmanager.enable = true;
|
||||
};
|
||||
|
||||
|
||||
nix.settings = {
|
||||
experimental-features = [ "nix-command" "flakes" ];
|
||||
substituters = ["https://hyprland.cachix.org"];
|
||||
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
config.common.default = "*";
|
||||
|
||||
@@ -6,22 +6,29 @@
|
||||
|
||||
{
|
||||
|
||||
#imports = [ ./hardware-configuration.nix ];
|
||||
|
||||
options.sysconfig.laptop.enable = lib.options.mkOption {
|
||||
type = lib.types.bool;
|
||||
};
|
||||
|
||||
config = lib.mkIf config.sysconfig.laptop.enable {
|
||||
|
||||
assertions = [
|
||||
{
|
||||
assertion = !config.sysconfig.homebox.enable;
|
||||
message = "sysconfig.laptop conflicts with homebox!";
|
||||
}
|
||||
];
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
boot.kernelParams = [ "snd-intel-dspcfg.dsp_driver=1" ];
|
||||
boot = {
|
||||
loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
kernelParams = [ "snd-intel-dspcfg.dsp_driver=1" ];
|
||||
};
|
||||
|
||||
hardware = {
|
||||
#graphics.enable = true;
|
||||
@@ -78,132 +85,24 @@
|
||||
|
||||
};
|
||||
|
||||
#networking
|
||||
|
||||
networking = {
|
||||
hostName = "laptop";
|
||||
|
||||
nameservers = [ "1.1.1.1#one.one.one.one" "1.0.0.1#one.one.one.one" ];
|
||||
|
||||
networkmanager = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
# nix experimental features
|
||||
nix.settings = {
|
||||
experimental-features = [ "nix-command" "flakes" ];
|
||||
substituters = ["https://hyprland.cachix.org"];
|
||||
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
|
||||
};
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/Chicago";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "en_US.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "en_US.UTF-8";
|
||||
LC_PAPER = "en_US.UTF-8";
|
||||
LC_TELEPHONE = "en_US.UTF-8";
|
||||
LC_TIME = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
environment.sessionVariables = {
|
||||
|
||||
NIXOS_OZONE_WL = "1";
|
||||
};
|
||||
|
||||
environment.shells = with pkgs; [ zsh ];
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
config.common.default = "*";
|
||||
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
|
||||
};
|
||||
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
services.mpd = {
|
||||
enable = true;
|
||||
startWhenNeeded = true;
|
||||
network.port = 6600;
|
||||
network.listenAddress = "127.0.0.1";
|
||||
user = "nathan";
|
||||
musicDirectory = "/home/nathan/Music";
|
||||
extraConfig = ''
|
||||
audio_output {
|
||||
type "pipewire"
|
||||
name "Audio1"
|
||||
}
|
||||
audio_output {
|
||||
type "fifo"
|
||||
name "visualizer"
|
||||
path "/tmp/mpd.fifo"
|
||||
format "44100:16:1"
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.mpd.environment = {
|
||||
XDG_RUNTIME_DIR = "/run/user/1000";
|
||||
};
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
|
||||
programs.adb.enable = true;
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.nathan = {
|
||||
isNormalUser = true;
|
||||
description = "Nathan";
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"adbusers"
|
||||
#school?
|
||||
"plugdev"
|
||||
];
|
||||
# packages supplied by home-manager
|
||||
};
|
||||
|
||||
users.defaultUserShell = pkgs.zsh;
|
||||
programs.zsh.enable = true;
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
# gstreamer
|
||||
gst_all_1.gstreamer
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good
|
||||
gst_all_1.gst-plugins-bad
|
||||
gst_all_1.gst-plugins-ugly
|
||||
|
||||
];
|
||||
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
nerdfonts
|
||||
];
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
|
||||
Reference in New Issue
Block a user