nizplz
This commit is contained in:
parent
3ed1ee7954
commit
68dfc234c6
@ -1,227 +0,0 @@
|
||||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
unstable = import <unstable> {config = { allowUnfree = true; };};
|
||||
in
|
||||
{
|
||||
# Enable OpenGL
|
||||
hardware.opengl = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
};
|
||||
hardware.ckb-next.enable = true;
|
||||
networking.firewall.enable = false;
|
||||
# Load nvidia driver for Xorg and Wayland
|
||||
services.xserver.videoDrivers = ["nvidia"]; # or "nvidiaLegacy470 etc.
|
||||
security.polkit.enable = true;
|
||||
environment.pathsToLink = [ "/libexec" ];
|
||||
hardware.nvidia = {
|
||||
|
||||
# Modesetting is required.
|
||||
modesetting.enable = true;
|
||||
|
||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||
# of just the bare essentials.
|
||||
powerManagement.enable = false;
|
||||
|
||||
# Fine-grained power management. Turns off GPU when not in use.
|
||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||
powerManagement.finegrained = false;
|
||||
|
||||
# Use the NVidia open source kernel module (not to be confused with the
|
||||
# independent third-party "nouveau" open source driver).
|
||||
# Support is limited to the Turing and later architectures. Full list of
|
||||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Only available from driver 515.43.04+
|
||||
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
||||
open = false;
|
||||
|
||||
# Enable the Nvidia settings menu,
|
||||
# accessible via `nvidia-settings`.
|
||||
nvidiaSettings = true;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
};
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
networking.hostName = "nixos"; # Define your hostname.
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Oslo";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
|
||||
|
||||
# Configure keymap in X11
|
||||
services.xserver = {
|
||||
layout = "us";
|
||||
xkbVariant = "";
|
||||
};
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
# Enable sound with pipewire.
|
||||
sound.enable = true;
|
||||
hardware.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
# If you want to use JACK applications, uncomment this
|
||||
#jack.enable = true;
|
||||
|
||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
||||
# no need to redefine it in your config for now)
|
||||
#media-session.enable = true;
|
||||
};
|
||||
|
||||
programs.zsh.enable = true;
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
users.defaultUserShell = pkgs.zsh;
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.mbeno = {
|
||||
shell = pkgs.zsh;
|
||||
isNormalUser = true;
|
||||
description = "Martin";
|
||||
extraGroups = [ "networkmanager" "wheel" "docker" ];
|
||||
packages = with pkgs; [
|
||||
firefox
|
||||
alacritty
|
||||
mumble
|
||||
zoom
|
||||
mattermost-desktop
|
||||
# thunderbird
|
||||
];
|
||||
};
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||
};
|
||||
|
||||
security.sudo.extraRules= [
|
||||
{ users = [ "mbeno" ];
|
||||
commands = [
|
||||
{ command = "ALL" ;
|
||||
options= [ "NOPASSWD" ]; # "SETENV" # Adding the following could be a good idea
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
services.xserver = {
|
||||
|
||||
desktopManager = {
|
||||
xterm.enable = false;
|
||||
};
|
||||
|
||||
displayManager = {
|
||||
defaultSession = "none+i3";
|
||||
autoLogin.enable = true;
|
||||
autoLogin.user = "mbeno";
|
||||
};
|
||||
|
||||
windowManager.i3 = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
dmenu #application launcher most people use
|
||||
i3status # gives you the default i3 status bar
|
||||
i3lock #default i3 screen locker
|
||||
i3blocks #if you are planning on using i3blocks over i3status
|
||||
polybar
|
||||
rofi
|
||||
picom
|
||||
nitrogen
|
||||
];
|
||||
};
|
||||
};
|
||||
systemd = {
|
||||
user.services.polkit-gnome-authentication-agent-1 = {
|
||||
description = "polkit-gnome-authentication-agent-1";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
wants = [ "graphical-session.target" ];
|
||||
after = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||
Restart = "on-failure";
|
||||
RestartSec = 1;
|
||||
TimeoutStopSec = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
steam-run
|
||||
xdg-utils
|
||||
xdg-desktop-portal
|
||||
xdg-desktop-portal-gtk
|
||||
unstable.zoom-us
|
||||
neovim
|
||||
git
|
||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
# wget
|
||||
];
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
# services.openssh.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# 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
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "23.11"; # Did you read the comment?
|
||||
|
||||
}
|
51
flake.nix
Normal file
51
flake.nix
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
description = "Benny nixos config flake";
|
||||
|
||||
inputs = {
|
||||
# nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-23.11";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager?ref=release-23.11";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
sops-nix.url = "github:Mic92/sops-nix";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{ self
|
||||
, nixpkgs
|
||||
, nixpkgs-unstable
|
||||
, sops-nix
|
||||
, notlistener
|
||||
, ghettoptt
|
||||
, ...
|
||||
}@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
user = "mbeno";
|
||||
overlay-unstable = final: prev: {
|
||||
unstable = import nixpkgs-unstable {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
nixosConfigurations = {
|
||||
zedd = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = { inherit inputs self user sops-nix; };
|
||||
modules = [
|
||||
({ config, pkgs, ... }: {
|
||||
nixpkgs.overlays = [
|
||||
overlay-unstable
|
||||
];
|
||||
})
|
||||
./hosts/mbeno
|
||||
sops-nix.nixosModules.sops
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
32
hosts/zedd/configuration.nix
Normal file
32
hosts/zedd/configuration.nix
Normal file
@ -0,0 +1,32 @@
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
unstable = import <unstable> { config = { allowUnfree = true; }; };
|
||||
in
|
||||
{
|
||||
# Enable OpenGL
|
||||
# Load nvidia driver for Xorg and Wayland
|
||||
environment.pathsToLink = [ "/libexec" ];
|
||||
imports =
|
||||
[
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
networking.hostName = "nixos"; # Define your hostname.
|
||||
networking.networkmanager.enable = true;
|
||||
time.timeZone = "Europe/Oslo";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
system.stateVersion = "23.11"; # Did you read the comment?
|
||||
|
||||
}
|
8
hosts/zedd/default.nix
Normal file
8
hosts/zedd/default.nix
Normal file
@ -0,0 +1,8 @@
|
||||
{ inputs, self, pks, ... }: {
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./hardware-configuration.nix
|
||||
../../system
|
||||
../../user
|
||||
];
|
||||
}
|
1
system/default.nix
Normal file
1
system/default.nix
Normal file
@ -0,0 +1 @@
|
||||
{ imports = [ ./users ./services ./hardware ./fonts ./security ./programs ] }
|
15
system/fonts.nix
Normal file
15
system/fonts.nix
Normal file
@ -0,0 +1,15 @@
|
||||
{ pkgs, ... }: {
|
||||
environment.systemPackages = with pkgs; [ twemoji-color-font ];
|
||||
fonts.packages = with pkgs; [
|
||||
fira-code
|
||||
fira-code-symbols
|
||||
nerdfonts
|
||||
noto-fonts
|
||||
noto-fonts-cjk
|
||||
noto-fonts-emoji
|
||||
noto-fonts-monochrome-emoji
|
||||
source-sans-pro
|
||||
twemoji-color-font
|
||||
font-awesome
|
||||
];
|
||||
}
|
18
system/hardware.nix
Normal file
18
system/hardware.nix
Normal file
@ -0,0 +1,18 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
hardware.opengl = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
};
|
||||
hardware.ckb-next.enable = true;
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = false;
|
||||
powerManagement.finegrained = false;
|
||||
open = false;
|
||||
nvidiaSettings = true;
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
};
|
||||
hardware.pulseaudio.enable = false;
|
||||
}
|
45
system/programs.nix
Normal file
45
system/programs.nix
Normal file
@ -0,0 +1,45 @@
|
||||
{ config, pkgs, ... }: {
|
||||
|
||||
programs.zsh.enable = true;
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||
};
|
||||
programs.gnupg.agent = {
|
||||
enable = true;
|
||||
pinentryFlavor = "curses";
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
steam-run
|
||||
xdg-utils
|
||||
xdg-desktop-portal
|
||||
xdg-desktop-portal-gtk
|
||||
unstable.zoom-us
|
||||
neovim
|
||||
git
|
||||
gnupg
|
||||
pinentry-rofi
|
||||
pinentry
|
||||
rofi-rbw-x11
|
||||
rbw
|
||||
nil
|
||||
nixpkgs-fmt
|
||||
];
|
||||
systemd = {
|
||||
user.services.polkit-gnome-authentication-agent-1 = {
|
||||
description = "polkit-gnome-authentication-agent-1";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
wants = [ "graphical-session.target" ];
|
||||
after = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||
Restart = "on-failure";
|
||||
RestartSec = 1;
|
||||
TimeoutStopSec = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
7
system/security.nix
Normal file
7
system/security.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ pkgs, ... }: {
|
||||
# Enable sudo
|
||||
security.sudo = {
|
||||
enable = true;
|
||||
wheelNeedsPassword = false;
|
||||
};
|
||||
}
|
45
system/services.nix
Normal file
45
system/services.nix
Normal file
@ -0,0 +1,45 @@
|
||||
{ config, pkgs, ... }: {
|
||||
|
||||
sound.enable = true;
|
||||
security.rtkit.enable = true;
|
||||
networking.firewall.enable = false;
|
||||
security.polkit.enable = true;
|
||||
services = {
|
||||
xserver = {
|
||||
enable = true;
|
||||
layout = "us";
|
||||
xkbVariant = "";
|
||||
desktopManager = {
|
||||
xterm.enable = false;
|
||||
};
|
||||
videoDrivers = [ "nvidia" ];
|
||||
displayManager = {
|
||||
defaultSession = "none+i3";
|
||||
autoLogin.enable = true;
|
||||
autoLogin.user = "mbeno";
|
||||
};
|
||||
|
||||
windowManager.i3 = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
dmenu #application launcher most people use
|
||||
i3status # gives you the default i3 status bar
|
||||
i3lock #default i3 screen locker
|
||||
i3blocks #if you are planning on using i3blocks over i3status
|
||||
polybar
|
||||
rofi
|
||||
picom
|
||||
nitrogen
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
services.pcscd.enable = true;
|
||||
services.dbus.packages = [ pkgs.gcr ];
|
||||
}
|
29
system/users.nix
Normal file
29
system/users.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{ config, pkgs, ... }: {
|
||||
|
||||
users.defaultUserShell = pkgs.zsh;
|
||||
users.users.mbeno = {
|
||||
shell = pkgs.zsh;
|
||||
isNormalUser = true;
|
||||
description = "Martin";
|
||||
extraGroups = [ "networkmanager" "wheel" "docker" ];
|
||||
packages = with pkgs; [
|
||||
firefox
|
||||
alacritty
|
||||
mumble
|
||||
zoom
|
||||
mattermost-desktop
|
||||
# thunderbird
|
||||
];
|
||||
};
|
||||
security.sudo.extraRules = [
|
||||
{
|
||||
users = [ "mbeno" ];
|
||||
commands = [
|
||||
{
|
||||
command = "ALL";
|
||||
options = [ "NOPASSWD" ]; # "SETENV" # Adding the following could be a good idea
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
35
user/default.nix
Normal file
35
user/default.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{ pkgs, inputs, user, ... }: {
|
||||
imports = [ inputs.home-manager.nixosModules.home-manager ];
|
||||
home-manager = {
|
||||
useUserPackages = true;
|
||||
useGlobalPkgs = true;
|
||||
extraSpecialArgs = { inherit pkgs inputs user; };
|
||||
users.${user} = { pkgs, ... }: {
|
||||
imports = [
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
./sops
|
||||
./programs/neovim
|
||||
./programs/firefox
|
||||
./programs/tmux
|
||||
./programs/dunst
|
||||
./programs/kitty
|
||||
./programs/rofi
|
||||
./programs/obs-studio
|
||||
./programs/vscode
|
||||
./scripts
|
||||
./zsh
|
||||
./packages
|
||||
./ssh
|
||||
];
|
||||
firefox.enable = true;
|
||||
tmux.enable = true;
|
||||
hyprland.enable = true;
|
||||
home = {
|
||||
username = "${user}";
|
||||
homeDirectory = "/home/${user}";
|
||||
stateVersion = "23.11";
|
||||
};
|
||||
programs.home-manager.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
79
user/packages/default.nix
Normal file
79
user/packages/default.nix
Normal file
@ -0,0 +1,79 @@
|
||||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
# Generic tools
|
||||
age
|
||||
alacritty
|
||||
unstable.btop
|
||||
bzip2
|
||||
croc
|
||||
easyeffects
|
||||
fd
|
||||
ffmpeg
|
||||
file
|
||||
go-task
|
||||
glib
|
||||
jq
|
||||
kitty
|
||||
kubectl
|
||||
ncdu
|
||||
nwg-look
|
||||
mumble
|
||||
mpv
|
||||
pamixer
|
||||
pinentry
|
||||
pre-commit
|
||||
pulseaudio
|
||||
pulsemixer
|
||||
rbw
|
||||
restic
|
||||
ripgrep
|
||||
rofi-rbw-wayland
|
||||
sops
|
||||
spotify
|
||||
spicetify-cli
|
||||
sshfs
|
||||
unstable.ventoy
|
||||
|
||||
# k8s tools
|
||||
unstable.talosctl
|
||||
unstable.k9s
|
||||
unstable.cilium-cli
|
||||
unstable.kubernetes-helm
|
||||
unstable.cmctl
|
||||
unstable.krew
|
||||
|
||||
# steam
|
||||
# steam-run
|
||||
# steamcmd
|
||||
# gamescope
|
||||
tokei
|
||||
unzip
|
||||
yt-dlp
|
||||
unstable.zoom-us
|
||||
unstable.vmware-horizon-client
|
||||
|
||||
# Editors
|
||||
# vscode
|
||||
|
||||
# Go stuff
|
||||
go
|
||||
delve
|
||||
gopls
|
||||
|
||||
# js/ts
|
||||
nodejs
|
||||
nodePackages.pnpm
|
||||
typescript
|
||||
|
||||
# Py stuff
|
||||
(unstable.python312.withPackages (p: with p; [
|
||||
requests
|
||||
]))
|
||||
poetry
|
||||
ruff
|
||||
|
||||
# Rust
|
||||
rustup
|
||||
|
||||
];
|
||||
}
|
76
user/programs/dunst/default.nix
Normal file
76
user/programs/dunst/default.nix
Normal file
@ -0,0 +1,76 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
services.dunst = {
|
||||
enable = true;
|
||||
iconTheme = {
|
||||
name = "Papirus-Dark";
|
||||
package = pkgs.papirus-icon-theme;
|
||||
};
|
||||
settings = {
|
||||
global = {
|
||||
rounded = "yes";
|
||||
origin = "top-right";
|
||||
monitor = "3";
|
||||
alignment = "left";
|
||||
vertical_alignment = "center";
|
||||
width = "400";
|
||||
height = "400";
|
||||
scale = 0;
|
||||
gap_size = 0;
|
||||
progress_bar = true;
|
||||
transparency = 0;
|
||||
text_icon_padding = 0;
|
||||
separator_color = "frame";
|
||||
sort = "yes";
|
||||
idle_threshold = 120;
|
||||
line_height = 0;
|
||||
markup = "full";
|
||||
show_age_threshold = 60;
|
||||
ellipsize = "middle";
|
||||
ignore_newline = "no";
|
||||
stack_duplicates = true;
|
||||
sticky_history = "yes";
|
||||
history_length = 20;
|
||||
always_run_script = true;
|
||||
corner_radius = 10;
|
||||
# follow = "mouse";
|
||||
font = "Source Sans Pro 10";
|
||||
format = "<b>%s</b>\\n%b"; #format = "<span foreground='#f3f4f5'><b>%s %p</b></span>\n%b"
|
||||
frame_color = "#232323";
|
||||
frame_width = 1;
|
||||
offset = "15x15";
|
||||
horizontal_padding = 10;
|
||||
icon_position = "left";
|
||||
indicate_hidden = "yes";
|
||||
min_icon_size = 0;
|
||||
max_icon_size = 64;
|
||||
mouse_left_click = "do_action, close_current";
|
||||
mouse_middle_click = "close_current";
|
||||
mouse_right_click = "close_all";
|
||||
padding = 10;
|
||||
plain_text = "no";
|
||||
separator_height = 2;
|
||||
show_indicators = "yes";
|
||||
shrink = "no";
|
||||
word_wrap = "yes";
|
||||
browser = "/usr/bin/env firefox -new-tab";
|
||||
};
|
||||
|
||||
fullscreen_delay_everything = { fullscreen = "delay"; };
|
||||
|
||||
urgency_critical = {
|
||||
background = "#d64e4e";
|
||||
foreground = "#f0e0e0";
|
||||
};
|
||||
urgency_low = {
|
||||
background = "#232323";
|
||||
foreground = "#2596be";
|
||||
};
|
||||
urgency_normal = {
|
||||
background = "#1e1e2a";
|
||||
foreground = "#2596be";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
6
user/programs/firefox/default.nix
Normal file
6
user/programs/firefox/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, config, lib, inputs, user, ... }: {
|
||||
options.firefox.enable = lib.mkEnableOption "Firefox";
|
||||
|
||||
config =
|
||||
lib.mkIf config.firefox.enable { programs.firefox = { enable = true; }; };
|
||||
}
|
58
user/programs/neovim/default.nix
Normal file
58
user/programs/neovim/default.nix
Normal file
@ -0,0 +1,58 @@
|
||||
{ pkgs, ... }: {
|
||||
programs = {
|
||||
neovim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
vimAlias = true;
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
vim-fugitive
|
||||
undotree
|
||||
telescope-nvim
|
||||
nvim-cmp
|
||||
cmp-nvim-lsp
|
||||
nvim-lspconfig
|
||||
lsp-zero-nvim
|
||||
vim-floaterm
|
||||
luasnip
|
||||
cmp_luasnip
|
||||
lualine-nvim
|
||||
vim-sleuth
|
||||
copilot-lua
|
||||
copilot-cmp
|
||||
cmp-cmdline
|
||||
cmp-buffer
|
||||
catppuccin-nvim
|
||||
(nvim-treesitter.withPlugins (p: [
|
||||
p.tree-sitter-yaml
|
||||
p.tree-sitter-nix
|
||||
p.tree-sitter-go
|
||||
p.tree-sitter-lua
|
||||
p.tree-sitter-vim
|
||||
p.tree-sitter-bash
|
||||
p.tree-sitter-json
|
||||
p.tree-sitter-python
|
||||
]))
|
||||
];
|
||||
extraLuaConfig = ''
|
||||
${builtins.readFile ./options.lua}
|
||||
${builtins.readFile ./plugins.lua}
|
||||
${builtins.readFile ./keybinds.lua}
|
||||
'';
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
# nix stuff
|
||||
nixpkgs-fmt
|
||||
statix
|
||||
|
||||
# LSPs
|
||||
gopls
|
||||
nodePackages.pyright
|
||||
nodePackages.typescript-language-server
|
||||
nodePackages.typescript
|
||||
nil
|
||||
yaml-language-server
|
||||
lua-language-server
|
||||
];
|
||||
home.sessionVariables.EDITOR = "nvim";
|
||||
}
|
31
user/programs/neovim/keybinds.lua
Normal file
31
user/programs/neovim/keybinds.lua
Normal file
@ -0,0 +1,31 @@
|
||||
-- Keybinds
|
||||
|
||||
-- Term
|
||||
vim.g.floaterm_keymap_toggle = '<leader>ft'
|
||||
|
||||
-- Tabs
|
||||
vim.keymap.set('n', '<leader>n', ':tabnew<CR>',
|
||||
{ silent = true, desc = '[N]ew tab' })
|
||||
vim.keymap.set('n', '<leader>p', ':tabnext<CR>',
|
||||
{ silent = true, desc = '[p]Next tab' })
|
||||
vim.keymap.set('n', '<leader>P', ':tabprev<CR>',
|
||||
{ silent = true, desc = '[P]Previous tab' })
|
||||
|
||||
-- Telescope
|
||||
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles,
|
||||
{ desc = '[?] FInd recently opened files' })
|
||||
vim.keymap.set('n', '<leader>ff', require('telescope.builtin').find_files,
|
||||
{ desc = '[F]ind [F]iles' })
|
||||
vim.keymap.set('n', '<leader>ff', require('telescope.builtin').find_files,
|
||||
{ desc = '[F]ind [F]iles' })
|
||||
vim.keymap.set('n', '<leader>fg', require('telescope.builtin').live_grep,
|
||||
{ desc = '[F]ind by [G]rep' })
|
||||
|
||||
-- Tabs
|
||||
vim.keymap.set('n', '<leader>tt', ':tabnew<cr>')
|
||||
vim.keymap.set('n', '<leader>tn', ':tabnext<cr>')
|
||||
vim.keymap.set('n', '<leader>tp', ':tabprevious<cr>')
|
||||
|
||||
-- LSP
|
||||
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration)
|
||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition)
|
13
user/programs/neovim/options.lua
Normal file
13
user/programs/neovim/options.lua
Normal file
@ -0,0 +1,13 @@
|
||||
-- Options
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
|
||||
vim.opt.cursorline = true
|
||||
vim.opt.scrolloff = 15
|
||||
vim.opt.wrap = true
|
||||
vim.o.number = true
|
||||
vim.o.relativenumber = true
|
||||
|
||||
vim.o.tabstop = 4
|
||||
vim.o.shiftwidth = 4
|
||||
vim.o.expandtab = true
|
245
user/programs/neovim/plugins.lua
Normal file
245
user/programs/neovim/plugins.lua
Normal file
@ -0,0 +1,245 @@
|
||||
-- Plugins
|
||||
|
||||
-- LSP stuff
|
||||
local lsp_zero = require('lsp-zero')
|
||||
|
||||
|
||||
lsp_zero.on_attach(function(_, bufnr)
|
||||
lsp_zero.default_keymaps({ buffer = bufnr })
|
||||
end)
|
||||
|
||||
lsp_zero.format_on_save({
|
||||
format_opts = {
|
||||
async = false,
|
||||
timeout_ms = 10000,
|
||||
},
|
||||
servers = {
|
||||
['gopls'] = { 'go' },
|
||||
['nil_ls'] = { 'nix' },
|
||||
['lua_ls'] = { 'lua' },
|
||||
['tsserver'] = { 'typescript', 'javascript' },
|
||||
},
|
||||
})
|
||||
-- LSP: go
|
||||
local lspconfig = require('lspconfig')
|
||||
lspconfig.gopls.setup({
|
||||
settings = {
|
||||
gopls = {
|
||||
analyses = {
|
||||
unusedparams = true,
|
||||
},
|
||||
staticcheck = true,
|
||||
gofumpt = true,
|
||||
}
|
||||
}
|
||||
})
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
pattern = "*.go",
|
||||
callback = function()
|
||||
local params = vim.lsp.util.make_range_params()
|
||||
params.context = { only = { "source.organizeImports" } }
|
||||
-- buf_request_sync defaults to a 1000ms timeout. Depending on your
|
||||
-- machine and codebase, you may want longer. Add an additional
|
||||
-- argument after params if you find that you have to write the file
|
||||
-- twice for changes to be saved.
|
||||
-- E.g., vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000)
|
||||
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params)
|
||||
for cid, res in pairs(result or {}) do
|
||||
for _, r in pairs(res.result or {}) do
|
||||
if r.edit then
|
||||
local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16"
|
||||
vim.lsp.util.apply_workspace_edit(r.edit, enc)
|
||||
end
|
||||
end
|
||||
end
|
||||
vim.lsp.buf.format({ async = false })
|
||||
end
|
||||
})
|
||||
|
||||
-- LSP: nix
|
||||
lspconfig.nil_ls.setup({
|
||||
autostart = true,
|
||||
settings = {
|
||||
['nil'] = {
|
||||
formatting = {
|
||||
command = { "nixpkgs-fmt" },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- LSP: lua
|
||||
lspconfig.lua_ls.setup({
|
||||
on_init = function(client)
|
||||
local path = client.workspace_folders[1].name
|
||||
if vim.loop.fs_stat(path .. '/.luarc.json') or vim.loop.fs_stat(path .. '/.luarc.jsonc') then
|
||||
return
|
||||
end
|
||||
|
||||
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
|
||||
runtime = {
|
||||
-- Tell the language server which version of Lua you're using
|
||||
-- (most likely LuaJIT in the case of Neovim)
|
||||
version = 'LuaJIT'
|
||||
},
|
||||
-- Make the server aware of Neovim runtime files
|
||||
workspace = {
|
||||
checkThirdParty = false,
|
||||
library = {
|
||||
vim.env.VIMRUNTIME
|
||||
-- Depending on the usage, you might want to add additional paths here.
|
||||
-- "${3rd}/luv/library"
|
||||
-- "${3rd}/busted/library",
|
||||
}
|
||||
-- or pull in all of 'runtimepath'. NOTE: this is a lot slower
|
||||
-- library = vim.api.nvim_get_runtime_file("", true)
|
||||
}
|
||||
})
|
||||
end,
|
||||
settings = {
|
||||
Lua = {
|
||||
format = {
|
||||
enable = true,
|
||||
defaultConfig = {
|
||||
indent_style = "space",
|
||||
indent_size = "2",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
-- LSP: ts/js
|
||||
lspconfig.tsserver.setup({
|
||||
init_options = {
|
||||
plugins = {
|
||||
},
|
||||
},
|
||||
filetypes = {
|
||||
"typescript",
|
||||
"javascript",
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
-- Telescope
|
||||
require('telescope').setup({
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true,
|
||||
override_generic_sorter = true,
|
||||
override_file_sorter = true,
|
||||
case_mode = "smart_case",
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
-- Tresitter stuff
|
||||
require('nvim-treesitter.configs').setup {
|
||||
ensure_installed = {},
|
||||
auto_install = false,
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = '<c-space>',
|
||||
node_incremental = '<c-space>',
|
||||
scope_incremental = '<c-s>',
|
||||
node_decremental = '<M-space>',
|
||||
},
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true,
|
||||
|
||||
keymaps = {
|
||||
['aa'] = '@parameter.outer',
|
||||
['ia'] = '@parameter.inner',
|
||||
['af'] = '@function.outer',
|
||||
['if'] = '@function.inner',
|
||||
['ac'] = '@class.outer',
|
||||
['ic'] = '@class.inner',
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-- Lualine
|
||||
require('lualine').setup({
|
||||
options = {
|
||||
icons_enabled = false,
|
||||
component_separators = '|',
|
||||
disabled_filetypes = {},
|
||||
always_divide_middle = true,
|
||||
globalstatus = true,
|
||||
},
|
||||
sections = {
|
||||
lualine_a = { 'mode' },
|
||||
lualine_b = { 'branch', 'diff', 'diagnostics' },
|
||||
lualine_c = {
|
||||
{
|
||||
'filename',
|
||||
file_status = true,
|
||||
newfile_status = true,
|
||||
path = 3,
|
||||
shorting_target = 30,
|
||||
symbols = {
|
||||
modified = '[+]',
|
||||
readonly = '[-]',
|
||||
unnamed = '[No name]',
|
||||
newfile = '[New]'
|
||||
}
|
||||
}
|
||||
},
|
||||
lualine_x = { 'encoding', 'fileformat', 'filetype' },
|
||||
lualine_y = { 'progress' },
|
||||
lualine_z = { 'location' }
|
||||
}
|
||||
})
|
||||
|
||||
-- Copilot
|
||||
require('copilot').setup({
|
||||
suggestions = { enabled = false },
|
||||
panel = { enabled = false },
|
||||
})
|
||||
require('copilot_cmp').setup()
|
||||
|
||||
-- Cmp
|
||||
local cmp = require('cmp')
|
||||
local cmp_action = lsp_zero.cmp_action()
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require('luasnip').lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
-- Enter to confirm completion
|
||||
['<CR>'] = cmp.mapping.confirm({ select = false }),
|
||||
-- Ctrl+Space to open completion menu
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
-- Move between snippet placeholders
|
||||
['<C-f>'] = cmp_action.luasnip_jump_forward(),
|
||||
['<C-b>'] = cmp_action.luasnip_jump_backward(),
|
||||
-- Scroll in completion docs
|
||||
['<C-k>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-j>'] = cmp.mapping.scroll_docs(4),
|
||||
}),
|
||||
sources = cmp.config.sources({
|
||||
}, {
|
||||
{ name = "copilot", group_index = 2 },
|
||||
{ name = "nvim_lsp", group_index = 2 },
|
||||
-- { name = "luasnip" },
|
||||
-- { name = "buffer" },
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
-- Colorscheme
|
||||
require('catppuccin').setup({
|
||||
})
|
||||
vim.cmd.colorscheme "catppuccin"
|
23
user/programs/obs-studio/default.nix
Normal file
23
user/programs/obs-studio/default.nix
Normal file
@ -0,0 +1,23 @@
|
||||
{ pkgs, ... }:
|
||||
# let
|
||||
# obs-backgroundremoval_1_1_10 = (pkgs.obs-studio-plugins.obs-backgroundremoval.overrideAttrs {
|
||||
# version = "1.1.10";
|
||||
# src = pkgs.fetchFromGitHub {
|
||||
# owner = "occ-ai";
|
||||
# repo = "obs-backgroundremoval";
|
||||
# rev = "1.1.10";
|
||||
# hash = "sha256-6OTtmjXS3fiorEPUSjjqrS8u9fVJnnZZoD722W3JQO8=";
|
||||
# };
|
||||
# }).override {
|
||||
# onnxruntime = pkgs.unstable.onnxruntime;
|
||||
# };
|
||||
# in
|
||||
{
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
obs-backgroundremoval
|
||||
];
|
||||
#plugins = [ obs-backgroundremoval_1_1_10 ];
|
||||
};
|
||||
}
|
17
user/programs/rofi/config.rasi
Normal file
17
user/programs/rofi/config.rasi
Normal file
@ -0,0 +1,17 @@
|
||||
configuration{
|
||||
modi: "run,drun,window";
|
||||
icon-theme: "Oranchelo";
|
||||
show-icons: true;
|
||||
terminal: "alacritty";
|
||||
drun-display-format: "{icon} {name}";
|
||||
location: 0;
|
||||
disable-history: false;
|
||||
hide-scrollbar: true;
|
||||
display-drun: " Apps ";
|
||||
display-run: " Run ";
|
||||
display-window: " Window";
|
||||
display-Network: " Network";
|
||||
sidebar-mode: true;
|
||||
}
|
||||
|
||||
@theme "latte"
|
24
user/programs/rofi/default.nix
Normal file
24
user/programs/rofi/default.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{ config, pkgs, ... }: {
|
||||
xdg.configFile."rofi/config.rasi" = {
|
||||
source = ./config.rasi;
|
||||
};
|
||||
|
||||
xdg.configFile."rofi/macchiato.rasi" = {
|
||||
source = pkgs.fetchFromGitHub
|
||||
{
|
||||
owner = "catppuccin";
|
||||
repo = "rofi";
|
||||
rev = "5350da41a11814f950c3354f090b90d4674a95ce";
|
||||
sha256 = "DNorfyl3C4RBclF2KDgwvQQwixpTwSRu7fIvihPN8JY=";
|
||||
} + "/basic/.local/share/rofi/themes/catppuccin-macchiato.rasi";
|
||||
};
|
||||
xdg.configFile."rofi/latte.rasi" = {
|
||||
source = pkgs.fetchFromGitHub
|
||||
{
|
||||
owner = "catppuccin";
|
||||
repo = "rofi";
|
||||
rev = "5350da41a11814f950c3354f090b90d4674a95ce";
|
||||
sha256 = "DNorfyl3C4RBclF2KDgwvQQwixpTwSRu7fIvihPN8JY=";
|
||||
} + "/basic/.local/share/rofi/themes/catppuccin-latte.rasi";
|
||||
};
|
||||
}
|
13
user/programs/tmux/default.nix
Normal file
13
user/programs/tmux/default.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{ pkgs, lib, config, ... }:
|
||||
with lib;
|
||||
let cfg = config.tmux.enable;
|
||||
in {
|
||||
options.tmux.enable = mkEnableOption "tmux";
|
||||
config = mkIf cfg {
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
prefix = "C-a";
|
||||
terminal = "screen-256color";
|
||||
};
|
||||
};
|
||||
}
|
19
user/programs/vscode/default.nix
Normal file
19
user/programs/vscode/default.nix
Normal file
@ -0,0 +1,19 @@
|
||||
{ pkgs, ... }: {
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
enableUpdateCheck = true;
|
||||
enableExtensionUpdateCheck = true;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
catppuccin.catppuccin-vsc
|
||||
catppuccin.catppuccin-vsc-icons
|
||||
golang.go
|
||||
vscodevim.vim
|
||||
ms-python.python
|
||||
ms-vscode-remote.remote-ssh
|
||||
bbenoist.nix
|
||||
];
|
||||
userSettings = {
|
||||
"window.titleBarStyle" = "custom";
|
||||
};
|
||||
};
|
||||
}
|
6
user/scripts/default.nix
Normal file
6
user/scripts/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, config, ... }: {
|
||||
home.file.".local/bin/rofi-launcher" = {
|
||||
source = ./rofi-launcher.sh;
|
||||
executable = true;
|
||||
};
|
||||
}
|
8
user/scripts/rofi-launcher.sh
Normal file
8
user/scripts/rofi-launcher.sh
Normal file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
rofi \
|
||||
-show drun \
|
||||
-modi run,drun,ssh \
|
||||
-scroll-method 0 \
|
||||
-drun-match-fields all \
|
||||
-drun-display-format "{name}" \
|
||||
-terminal alacritty
|
6
user/sops/default.nix
Normal file
6
user/sops/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ user, ... }: {
|
||||
sops = {
|
||||
age.keyFile = "/home/${user}/.config/sops/age/keys.txt";
|
||||
defaultSopsFile = ../../secrets/${user}/secret.yaml;
|
||||
};
|
||||
}
|
1
user/ssh/default.nix
Normal file
1
user/ssh/default.nix
Normal file
@ -0,0 +1 @@
|
||||
{ imports = [ ./zedd.nix ]; }
|
15
user/ssh/zedd.nix
Normal file
15
user/ssh/zedd.nix
Normal file
@ -0,0 +1,15 @@
|
||||
{ pkgs, ... }: {
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
controlMaster = "auto";
|
||||
|
||||
matchBlocks."dresden.uio.no" = {
|
||||
setEnv = {
|
||||
TERM = "xterm-256color";
|
||||
};
|
||||
hostname = "dresden.uio.no";
|
||||
forwardAgent = false;
|
||||
proxyJump = "mbeno@rlogin.uio.no";
|
||||
};
|
||||
};
|
||||
}
|
30
user/zsh/default.nix
Normal file
30
user/zsh/default.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{ user, pkgs, ... }: {
|
||||
home.packages = with pkgs; [ fd ];
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
autocd = false;
|
||||
enableAutosuggestions = true;
|
||||
enableCompletion = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
shellAliases = {
|
||||
nrebuild = "sudo nixos-rebuild switch --flake /home/${user}/nixos";
|
||||
};
|
||||
initExtra = ''
|
||||
bindkey -v
|
||||
bindkey '^R' history-incremental-search-backward
|
||||
|
||||
# Prompt stuff
|
||||
autoload -Uz promptinit
|
||||
promptinit
|
||||
prompt pure
|
||||
export PATH="''${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
|
||||
'';
|
||||
zplug = {
|
||||
enable = true;
|
||||
plugins = [
|
||||
({ name = "plugins/git"; tags = [ "from:oh-my-zsh" ]; })
|
||||
({ name = "modules/prompt"; tags = [ "from:prezto" ]; })
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user