reworking
23
flake.nix
@@ -206,5 +206,28 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
homeConfigurations = {
|
||||||
|
nathan = inputs.home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
system = builtins.currentSystem;
|
||||||
|
};
|
||||||
|
|
||||||
|
modules = [
|
||||||
|
./home-manager
|
||||||
|
{
|
||||||
|
homeconfig = {
|
||||||
|
username = "nathan";
|
||||||
|
graphical = false;
|
||||||
|
minimal = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,39 @@
|
|||||||
{ ... }: {
|
{ config, lib, ... }: {
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./programs
|
./programs
|
||||||
./services
|
./services
|
||||||
./users
|
./users
|
||||||
];
|
];
|
||||||
|
|
||||||
|
options.homeconfig = with lib; {
|
||||||
|
host = mkOption {
|
||||||
|
type = with types; nullOr str;
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
username = mkOption {
|
||||||
|
type = with types; nullOr str;
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
graphical = mkOption {
|
||||||
|
type = with types; bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
standalone.enable = mkOption {
|
||||||
|
type = with types; bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
|
||||||
|
home.username = lib.mkDefault config.homeconfig.username;
|
||||||
|
|
||||||
|
home.homeDirectory = lib.mkDefault "/home/${config.homeconfig.username}";
|
||||||
|
|
||||||
|
programs.home-manager.enable = config.homeconfig.standalone.enable;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,31 +17,9 @@
|
|||||||
default = false;
|
default = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkMerge [
|
config = {
|
||||||
|
|
||||||
{
|
nixpkgs.config = lib.mkIf (!config.homeconfig.minimal) {
|
||||||
home.packages = with pkgs; [
|
|
||||||
killall
|
|
||||||
btop
|
|
||||||
zip
|
|
||||||
unzip
|
|
||||||
gcc
|
|
||||||
zulu
|
|
||||||
rsync
|
|
||||||
lxqt.lxqt-policykit
|
|
||||||
blueberry
|
|
||||||
wl-clipboard
|
|
||||||
xfce.thunar
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
curl
|
|
||||||
wget
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
(lib.mkIf (!config.homeconfig.minimal) {
|
|
||||||
|
|
||||||
nixpkgs.config = {
|
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -59,7 +37,22 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
in [
|
in [
|
||||||
|
killall
|
||||||
|
btop
|
||||||
|
zip
|
||||||
|
unzip
|
||||||
|
gcc
|
||||||
|
zulu
|
||||||
|
rsync
|
||||||
|
lxqt.lxqt-policykit
|
||||||
|
blueberry
|
||||||
|
wl-clipboard
|
||||||
|
xfce.thunar
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
curl
|
||||||
|
wget
|
||||||
|
] ++ (if !config.homeconfig.minimal then [
|
||||||
cava
|
cava
|
||||||
android-tools
|
android-tools
|
||||||
neovim-remote
|
neovim-remote
|
||||||
@@ -72,11 +65,11 @@
|
|||||||
brightnessctl
|
brightnessctl
|
||||||
libdbusmenu-gtk3
|
libdbusmenu-gtk3
|
||||||
lmms
|
lmms
|
||||||
#unfree {
|
#unfree {
|
||||||
geogebra
|
geogebra
|
||||||
spotify
|
spotify
|
||||||
pkgs-us.rustdesk-flutter
|
pkgs-us.rustdesk-flutter
|
||||||
#}
|
#}
|
||||||
|
|
||||||
neofetch
|
neofetch
|
||||||
pkgs-us.mpv
|
pkgs-us.mpv
|
||||||
@@ -85,28 +78,22 @@
|
|||||||
mpc-cli
|
mpc-cli
|
||||||
vlc
|
vlc
|
||||||
pavucontrol
|
pavucontrol
|
||||||
yewtube
|
|
||||||
ytmdl
|
|
||||||
ffmpeg
|
ffmpeg
|
||||||
rpi-imager
|
rpi-imager
|
||||||
tigervnc
|
tigervnc
|
||||||
keepassxc
|
keepassxc
|
||||||
httplz
|
|
||||||
|
|
||||||
#3D modeling/printing
|
#3D modeling/printing
|
||||||
blender
|
blender
|
||||||
freecad-wayland
|
freecad-wayland
|
||||||
cura-appimage
|
cura-appimage
|
||||||
|
|
||||||
#productivity
|
#productivity
|
||||||
libreoffice
|
libreoffice
|
||||||
super-productivity
|
|
||||||
|
|
||||||
#games
|
#games
|
||||||
prismlauncher
|
prismlauncher
|
||||||
];
|
|
||||||
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
|
] else []);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }: {
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
./programs
|
|
||||||
./services
|
|
||||||
./packages
|
|
||||||
./dotfiles
|
|
||||||
];
|
|
||||||
|
|
||||||
options.homeconfig = {
|
|
||||||
host = lib.options.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.enable = lib.options.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
|
|
||||||
home.stateVersion = "24.11";
|
|
||||||
|
|
||||||
home.username = "nix-on-droid";
|
|
||||||
|
|
||||||
home.homeDirectory = "/data/data/com.termux.nix/files/home";
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
package = pkgs.nix;
|
|
||||||
|
|
||||||
nixPath = [
|
|
||||||
"nixpkgs=${inputs.nixpkgs}"
|
|
||||||
];
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ssh.enable = true;
|
|
||||||
|
|
||||||
programs.home-manager.enable = config.homeconfig.home-manager.enable;
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 1007 KiB |
|
Before Width: | Height: | Size: 110 MiB |
|
Before Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 874 KiB |
|
Before Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 48 MiB |
|
Before Width: | Height: | Size: 203 MiB |
|
Before Width: | Height: | Size: 670 KiB |
|
Before Width: | Height: | Size: 273 KiB |
|
Before Width: | Height: | Size: 140 MiB |
|
Before Width: | Height: | Size: 3.1 MiB |
|
Before Width: | Height: | Size: 2.8 MiB |
|
Before Width: | Height: | Size: 36 MiB |
@@ -1,8 +0,0 @@
|
|||||||
{ config, lib, ... }: {
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/wal/templates" = { source = ./wal/templates; recursive = true; };
|
|
||||||
"Pictures/Wallpaper" = { source = ./Wallpaper; recursive = true; };
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,279 +0,0 @@
|
|||||||
## Configuration file for CAVA.
|
|
||||||
# Remove the ; to change parameters.
|
|
||||||
|
|
||||||
|
|
||||||
[general]
|
|
||||||
|
|
||||||
# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
|
|
||||||
; mode = normal
|
|
||||||
|
|
||||||
# Accepts only non-negative values.
|
|
||||||
; framerate = 60
|
|
||||||
|
|
||||||
# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
|
|
||||||
# new as of 0.6.0 autosens of low values (dynamic range)
|
|
||||||
# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
|
|
||||||
; autosens = 1
|
|
||||||
; overshoot = 20
|
|
||||||
|
|
||||||
# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
|
|
||||||
# 200 means double height. Accepts only non-negative values.
|
|
||||||
; sensitivity = 100
|
|
||||||
|
|
||||||
# The number of bars (0-512). 0 sets it to auto (fill up console).
|
|
||||||
# Bars' width and space between bars in number of characters.
|
|
||||||
; bars = 0
|
|
||||||
; bar_width = 2
|
|
||||||
; bar_spacing = 1
|
|
||||||
# bar_height is only used for output in "noritake" format
|
|
||||||
; bar_height = 32
|
|
||||||
|
|
||||||
# For SDL width and space between bars is in pixels, defaults are:
|
|
||||||
; bar_width = 20
|
|
||||||
; bar_spacing = 5
|
|
||||||
|
|
||||||
# sdl_glsl have these default values, they are only used to calulate max number of bars.
|
|
||||||
; bar_width = 1
|
|
||||||
; bar_spacing = 0
|
|
||||||
|
|
||||||
|
|
||||||
# Lower and higher cutoff frequencies for lowest and highest bars
|
|
||||||
# the bandwidth of the visualizer.
|
|
||||||
# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
|
|
||||||
# Cava will automatically increase the higher cutoff if a too low band is specified.
|
|
||||||
; lower_cutoff_freq = 50
|
|
||||||
; higher_cutoff_freq = 10000
|
|
||||||
|
|
||||||
|
|
||||||
# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
|
|
||||||
# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
|
|
||||||
; sleep_timer = 0
|
|
||||||
|
|
||||||
|
|
||||||
[input]
|
|
||||||
|
|
||||||
# Audio capturing method. Possible methods are: 'fifo', 'portaudio', 'pipewire', 'alsa', 'pulse', 'sndio', 'oss', 'jack' or 'shmem'
|
|
||||||
# Defaults to 'oss', 'pipewire', 'sndio', 'jack', 'pulse', 'alsa', 'portaudio' or 'fifo', in that order, dependent on what support cava was built with.
|
|
||||||
# On Mac it defaults to 'portaudio' or 'fifo'
|
|
||||||
# On windows this is automatic and no input settings are needed.
|
|
||||||
#
|
|
||||||
# All input methods uses the same config variable 'source'
|
|
||||||
# to define where it should get the audio.
|
|
||||||
#
|
|
||||||
# For pulseaudio and pipewire 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
|
|
||||||
# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
|
|
||||||
#
|
|
||||||
# For pipewire 'source' will be the object name or object.serial of the device to capture from.
|
|
||||||
# Both input and output devices are supported.
|
|
||||||
#
|
|
||||||
# For alsa 'source' will be the capture device.
|
|
||||||
# For fifo 'source' will be the path to fifo-file.
|
|
||||||
# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
|
|
||||||
#
|
|
||||||
# For sndio 'source' will be a raw recording audio descriptor or a monitoring sub-device, e.g. 'rsnd/2' or 'snd/1'. Default: 'default'.
|
|
||||||
# README.md contains further information on how to setup CAVA for sndio.
|
|
||||||
#
|
|
||||||
# For oss 'source' will be the path to a audio device, e.g. '/dev/dsp2'. Default: '/dev/dsp', i.e. the default audio device.
|
|
||||||
# README.md contains further information on how to setup CAVA for OSS on FreeBSD.
|
|
||||||
#
|
|
||||||
# For jack 'source' will be the name of the JACK server to connect to, e.g. 'foobar'. Default: 'default'.
|
|
||||||
# README.md contains further information on how to setup CAVA for JACK.
|
|
||||||
#
|
|
||||||
; method = pulse
|
|
||||||
; source = auto
|
|
||||||
|
|
||||||
; method = pipewire
|
|
||||||
; source = auto
|
|
||||||
|
|
||||||
; method = alsa
|
|
||||||
; source = hw:Loopback,1
|
|
||||||
|
|
||||||
; method = fifo
|
|
||||||
; source = /tmp/mpd.fifo
|
|
||||||
|
|
||||||
; method = shmem
|
|
||||||
; source = /squeezelite-AA:BB:CC:DD:EE:FF
|
|
||||||
|
|
||||||
; method = portaudio
|
|
||||||
; source = auto
|
|
||||||
|
|
||||||
; method = sndio
|
|
||||||
; source = default
|
|
||||||
|
|
||||||
; method = oss
|
|
||||||
; source = /dev/dsp
|
|
||||||
|
|
||||||
; method = jack
|
|
||||||
; source = default
|
|
||||||
|
|
||||||
# The options 'sample_rate', 'sample_bits', 'channels' and 'autoconnect' can be configured for some input methods:
|
|
||||||
# sample_rate: fifo, pipewire, sndio, oss
|
|
||||||
# sample_bits: fifo, pipewire, sndio, oss
|
|
||||||
# channels: sndio, oss, jack
|
|
||||||
# autoconnect: jack
|
|
||||||
# Other methods ignore these settings.
|
|
||||||
#
|
|
||||||
# For 'sndio' and 'oss' they are only preferred values, i.e. if the values are not supported
|
|
||||||
# by the chosen audio device, the device will use other supported values instead.
|
|
||||||
# Example: 48000, 32 and 2, but the device only supports 44100, 16 and 1, then it
|
|
||||||
# will use 44100, 16 and 1.
|
|
||||||
#
|
|
||||||
; sample_rate = 44100
|
|
||||||
; sample_bits = 16
|
|
||||||
; channels = 2
|
|
||||||
; autoconnect = 2
|
|
||||||
|
|
||||||
|
|
||||||
[output]
|
|
||||||
|
|
||||||
# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake', 'sdl'
|
|
||||||
# or 'sdl_glsl'.
|
|
||||||
# 'noncurses' (default) uses a buffer and cursor movements to only print
|
|
||||||
# changes from frame to frame in the terminal. Uses less resources and is less
|
|
||||||
# prone to tearing (vsync issues) than 'ncurses'.
|
|
||||||
#
|
|
||||||
# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
|
|
||||||
# stream of the bar heights that can be used to send to other applications.
|
|
||||||
# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
|
|
||||||
#
|
|
||||||
# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display
|
|
||||||
# in graphic mode. It only support the 3000 series graphical VFDs for now.
|
|
||||||
#
|
|
||||||
# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
|
|
||||||
# 'sdl_glsl' uses SDL to create an OpenGL context. Write your own shaders or
|
|
||||||
# use one of the predefined ones.
|
|
||||||
; method = noncurses
|
|
||||||
|
|
||||||
# Orientation of the visualization. Can be 'bottom', 'top', 'left' or 'right'.
|
|
||||||
# Default is 'bottom'. Other orientations are only supported on sdl and ncruses
|
|
||||||
# output. Note: many fonts have weird glyphs for 'top' and 'right' characters,
|
|
||||||
# which can make ncurses not look right.
|
|
||||||
; orientation = bottom
|
|
||||||
|
|
||||||
# Visual channels. Can be 'stereo' or 'mono'.
|
|
||||||
# 'stereo' mirrors both channels with low frequencies in center.
|
|
||||||
# 'mono' outputs left to right lowest to highest frequencies.
|
|
||||||
# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
|
|
||||||
# set 'reverse' to 1 to display frequencies the other way around.
|
|
||||||
; channels = stereo
|
|
||||||
; mono_option = average
|
|
||||||
; reverse = 0
|
|
||||||
|
|
||||||
# Raw output target. A fifo will be created if target does not exist.
|
|
||||||
; raw_target = /dev/stdout
|
|
||||||
|
|
||||||
# Raw data format. Can be 'binary' or 'ascii'.
|
|
||||||
; data_format = binary
|
|
||||||
|
|
||||||
# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
|
|
||||||
; bit_format = 16bit
|
|
||||||
|
|
||||||
# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
|
|
||||||
; ascii_max_range = 1000
|
|
||||||
|
|
||||||
# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
|
|
||||||
# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
|
|
||||||
; bar_delimiter = 59
|
|
||||||
; frame_delimiter = 10
|
|
||||||
|
|
||||||
# sdl window size and position. -1,-1 is centered.
|
|
||||||
; sdl_width = 1000
|
|
||||||
; sdl_height = 500
|
|
||||||
; sdl_x = -1
|
|
||||||
; sdl_y= -1
|
|
||||||
; sdl_full_screen = 0
|
|
||||||
|
|
||||||
# set label on bars on the x-axis. Can be 'frequency' or 'none'. Default: 'none'
|
|
||||||
# 'frequency' displays the lower cut off frequency of the bar above.
|
|
||||||
# Only supported on ncurses and noncurses output.
|
|
||||||
; xaxis = none
|
|
||||||
|
|
||||||
# enable alacritty synchronized updates. 1 = on, 0 = off
|
|
||||||
# removes flickering in alacritty terminal emulator.
|
|
||||||
# defaults to off since the behaviour in other terminal emulators is unknown
|
|
||||||
; alacritty_sync = 0
|
|
||||||
|
|
||||||
# Shaders for sdl_glsl, located in $HOME/.config/cava/shaders
|
|
||||||
; vertex_shader = pass_through.vert
|
|
||||||
; fragment_shader = bar_spectrum.frag
|
|
||||||
|
|
||||||
; for glsl output mode, keep rendering even if no audio
|
|
||||||
; continuous_rendering = 0
|
|
||||||
|
|
||||||
# disable console blank (screen saver) in tty
|
|
||||||
# (Not supported on FreeBSD)
|
|
||||||
; disable_blanking = 0
|
|
||||||
|
|
||||||
# show a flat bar at the bottom of the screen when idle, 1 = on, 0 = off
|
|
||||||
; show_idle_bar_heads = 1
|
|
||||||
|
|
||||||
# show waveform instead of frequency spectrum, 1 = on, 0 = off
|
|
||||||
; waveform = 0
|
|
||||||
|
|
||||||
[color]
|
|
||||||
|
|
||||||
# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
|
|
||||||
# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
|
|
||||||
# a terminal that can change color definitions such as Gnome-terminal or rxvt.
|
|
||||||
# default is to keep current terminal color
|
|
||||||
; background = default
|
|
||||||
; foreground = default
|
|
||||||
|
|
||||||
# SDL and sdl_glsl only support hex code colors, these are the default:
|
|
||||||
; background = '#111111'
|
|
||||||
; foreground = '#33ffff'
|
|
||||||
|
|
||||||
|
|
||||||
# Gradient mode, only hex defined colors are supported,
|
|
||||||
# background must also be defined in hex or remain commented out. 1 = on, 0 = off.
|
|
||||||
# You can define as many as 8 different colors. They range from bottom to top of screen
|
|
||||||
gradient = 1
|
|
||||||
gradient_count = 8
|
|
||||||
gradient_color_1 = '{color1}'
|
|
||||||
gradient_color_2 = '{color2}'
|
|
||||||
gradient_color_3 = '{color3}'
|
|
||||||
gradient_color_4 = '{color4}'
|
|
||||||
gradient_color_5 = '{color5}'
|
|
||||||
gradient_color_6 = '{color6}'
|
|
||||||
gradient_color_7 = '{color7}'
|
|
||||||
gradient_color_8 = '{color8}'
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[smoothing]
|
|
||||||
|
|
||||||
# Percentage value for integral smoothing. Takes values from 0 - 100.
|
|
||||||
# Higher values means smoother, but less precise. 0 to disable.
|
|
||||||
# DEPRECATED as of 0.8.0, use noise_reduction instead
|
|
||||||
; integral = 77
|
|
||||||
|
|
||||||
# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
|
|
||||||
; monstercat = 0
|
|
||||||
; waves = 0
|
|
||||||
|
|
||||||
# Set gravity percentage for "drop off". Higher values means bars will drop faster.
|
|
||||||
# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
|
|
||||||
# DEPRECATED as of 0.8.0, use noise_reduction instead
|
|
||||||
; gravity = 100
|
|
||||||
|
|
||||||
|
|
||||||
# In bar height, bars that would have been lower that this will not be drawn.
|
|
||||||
# DEPRECATED as of 0.8.0
|
|
||||||
; ignore = 0
|
|
||||||
|
|
||||||
# Noise reduction, int 0 - 100. default 77
|
|
||||||
# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth
|
|
||||||
# 100 will be very slow and smooth, 0 will be fast but noisy.
|
|
||||||
; noise_reduction = 77
|
|
||||||
|
|
||||||
|
|
||||||
[eq]
|
|
||||||
|
|
||||||
# This one is tricky. You can have as much keys as you want.
|
|
||||||
# Remember to uncomment more than one key! More keys = more precision.
|
|
||||||
# Look at readme.md on github for further explanations and examples.
|
|
||||||
; 1 = 1 # bass
|
|
||||||
; 2 = 1
|
|
||||||
; 3 = 1 # midtone
|
|
||||||
; 4 = 1
|
|
||||||
; 5 = 1 # treble
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }: let
|
|
||||||
system = "x86_64-linux";
|
|
||||||
|
|
||||||
pkgs-us = import inputs.nixpkgs-us {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
in {
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
./scripts
|
|
||||||
];
|
|
||||||
|
|
||||||
options.homeconfig.minimal = lib.options.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkMerge [
|
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
killall
|
|
||||||
zip
|
|
||||||
unzip
|
|
||||||
gcc
|
|
||||||
zulu
|
|
||||||
rsync
|
|
||||||
git
|
|
||||||
openssh
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
(lib.mkIf (!config.homeconfig.minimal) {
|
|
||||||
|
|
||||||
nixpkgs.config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; let
|
|
||||||
pypkgs = ps: with ps; [
|
|
||||||
numpy
|
|
||||||
pandas
|
|
||||||
torch
|
|
||||||
torchvision
|
|
||||||
torchaudio
|
|
||||||
transformers
|
|
||||||
datasets
|
|
||||||
pyaudio
|
|
||||||
faster-whisper
|
|
||||||
pyusb
|
|
||||||
];
|
|
||||||
|
|
||||||
in [
|
|
||||||
|
|
||||||
cava
|
|
||||||
neovim-remote
|
|
||||||
|
|
||||||
(pkgs.python311.withPackages pypkgs)
|
|
||||||
|
|
||||||
neofetch
|
|
||||||
];
|
|
||||||
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
|
|
||||||
options = {
|
|
||||||
homeScripts.enable = lib.options.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.homeScripts.enable {
|
|
||||||
home.packages = [
|
|
||||||
|
|
||||||
#scripts
|
|
||||||
(pkgs.writeShellScriptBin "_systemRebuild" ''
|
|
||||||
${pkgs.nh}/bin/nh os switch --ask /home/nathan/Projects/System
|
|
||||||
echo //////Enter to close//////
|
|
||||||
read
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "_homeRebuild" ''
|
|
||||||
${pkgs.nh}/bin/nh home switch --ask /home/nathan/Projects/System
|
|
||||||
echo //////Enter to close//////
|
|
||||||
read
|
|
||||||
'')
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "randWallpaper" ''
|
|
||||||
file=$(ls /home/nathan/Pictures/Wallpaper/ | shuf -n 1)
|
|
||||||
setWallpaper /home/nathan/Pictures/Wallpaper/$file
|
|
||||||
'')
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "setWallpaper" ''
|
|
||||||
img=''$(realpath ''${1:-~/.cache/bg})
|
|
||||||
p=''$(ps -e | grep mpvpaper | sed -n -e "s/ *//" -e "s/ /\n/" -e "1 P")
|
|
||||||
${pkgs.mpvpaper}/bin/mpvpaper -f -o "loop" '*' $img && \
|
|
||||||
changeColors $img $2 && \
|
|
||||||
sleep 0.4 && \
|
|
||||||
kill $p
|
|
||||||
'')
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "changeColors" ''
|
|
||||||
|
|
||||||
if [[ $(ls ~/.cache/ | grep bga) != bga ]]; then
|
|
||||||
echo 100 > ~/.cache/bga
|
|
||||||
fi
|
|
||||||
|
|
||||||
alpha=''${2:-`cat ~/.cache/bga`}
|
|
||||||
|
|
||||||
img=''$(realpath ''${1:-~/.cache/bg})
|
|
||||||
|
|
||||||
if [[ $alpha -lt 0 ]]; then
|
|
||||||
$alpha=0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $alpha -gt 100 ]]; then
|
|
||||||
$alpha=100
|
|
||||||
fi
|
|
||||||
|
|
||||||
wal -i $img -a $alpha --cols16 -n
|
|
||||||
|
|
||||||
echo $alpha > ~/.cache/bga
|
|
||||||
|
|
||||||
rm ~/.cache/bg
|
|
||||||
ln -s $img ~/.cache/bg
|
|
||||||
|
|
||||||
sleep 0.4
|
|
||||||
|
|
||||||
pywalfox update &
|
|
||||||
|
|
||||||
themecord > ~/.cache/_.txt && rm ~/.cache/_.txt
|
|
||||||
|
|
||||||
[[ $(pidof cava) != "" ]] && pkill -USR1 cava &
|
|
||||||
|
|
||||||
for i in $(ls /run/user/1000 | grep nvim); do nvr -s --servername /run/user/1000/$i --remote-send '<cmd>colorscheme pywal<CR>'; done
|
|
||||||
|
|
||||||
pkill -USR1 kitty
|
|
||||||
'')
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "onSystemStart" ''
|
|
||||||
randWallpaper &
|
|
||||||
ags &
|
|
||||||
pypr &
|
|
||||||
lxqt-policykit-agent &
|
|
||||||
# nmcli device wifi connect EagleNet password '~?C#@ZiH' &
|
|
||||||
hyprctl setcursor Bibata-Modern-Classic 16 &
|
|
||||||
wayvnc &
|
|
||||||
hyprctl reload &
|
|
||||||
novnc &
|
|
||||||
'')
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "colorPrefix" ''
|
|
||||||
exec -a "$0" "$@" &
|
|
||||||
sleep 0.4 && changeColors &
|
|
||||||
'')
|
|
||||||
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
|
|
||||||
options.homeconfig.calcurse.enable = lib.options.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.homeconfig.calcurse.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
calcurse
|
|
||||||
libnotify
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }: {
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
./terminal
|
|
||||||
./pywal
|
|
||||||
./calcurse
|
|
||||||
];
|
|
||||||
|
|
||||||
config = {
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
inputs.nixvim.packages.${pkgs.system}.default
|
|
||||||
];
|
|
||||||
|
|
||||||
home.sessionVariables.EDITOR = "nvim";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }: {
|
|
||||||
|
|
||||||
options.homeconfig.wal.enable = lib.options.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.homeconfig.wal.enable {
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
pywal16
|
|
||||||
imagemagick
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
|
|
||||||
programs.bat = {
|
|
||||||
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
extraPackages = with pkgs.bat-extras; [
|
|
||||||
batman
|
|
||||||
batpipe
|
|
||||||
batgrep
|
|
||||||
batdiff
|
|
||||||
batwatch
|
|
||||||
prettybat
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{ ... }: {
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
./bat
|
|
||||||
./eza
|
|
||||||
./fzf
|
|
||||||
./tmux
|
|
||||||
./kitty
|
|
||||||
./zoxide
|
|
||||||
./zsh
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
|
|
||||||
programs.eza = {
|
|
||||||
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
enableZshIntegration = true;
|
|
||||||
|
|
||||||
extraOptions = [
|
|
||||||
"--color=auto"
|
|
||||||
];
|
|
||||||
|
|
||||||
git = true;
|
|
||||||
|
|
||||||
icons = "auto";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
|
|
||||||
programs.fzf = {
|
|
||||||
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
enableZshIntegration = true;
|
|
||||||
|
|
||||||
tmux = {
|
|
||||||
#enableShellIntegration = true;
|
|
||||||
|
|
||||||
#shellIntegrationOptions = [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
|
|
||||||
programs.kitty = {
|
|
||||||
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
font = {
|
|
||||||
name = "FiraCode Nerd Font";
|
|
||||||
size = 12;
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
|
|
||||||
confirm_os_window_close 0
|
|
||||||
|
|
||||||
include ${config.home.homeDirectory}/.cache/wal/colors-kitty.conf
|
|
||||||
|
|
||||||
disable_ligatures never
|
|
||||||
|
|
||||||
dynamic_background_opacity yes
|
|
||||||
|
|
||||||
tab_bar_edge top
|
|
||||||
|
|
||||||
map ctrl+shift+t new_tab
|
|
||||||
map ctrl+shift+w close_tab
|
|
||||||
|
|
||||||
map ctrl+tab next_tab
|
|
||||||
map ctrl+shift+tab previous_tab
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
|
|
||||||
programs.tmux = {
|
|
||||||
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
clock24 = true;
|
|
||||||
|
|
||||||
mouse = true;
|
|
||||||
|
|
||||||
baseIndex = 1;
|
|
||||||
|
|
||||||
keyMode = "vi";
|
|
||||||
|
|
||||||
prefix = "C-b";
|
|
||||||
|
|
||||||
shell = "${pkgs.zsh}/bin/zsh";
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
|
|
||||||
programs.zoxide = {
|
|
||||||
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
enableZshIntegration = true;
|
|
||||||
|
|
||||||
options = [
|
|
||||||
"--cmd cd"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,156 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
oh-my-posh
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.zsh = {
|
|
||||||
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
enableCompletion = true;
|
|
||||||
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
|
|
||||||
shellAliases = {
|
|
||||||
ls = "eza";
|
|
||||||
ll = "ls -l";
|
|
||||||
|
|
||||||
ksh = "kitten ssh";
|
|
||||||
|
|
||||||
vi = "nvim";
|
|
||||||
vim = "nvim";
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
history = {
|
|
||||||
size = 5000;
|
|
||||||
ignoreAllDups = true;
|
|
||||||
ignoreSpace = true;
|
|
||||||
share = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
initExtraFirst = ''
|
|
||||||
cat ${config.home.homeDirectory}/.cache/wal/sequences
|
|
||||||
eval "$(oh-my-posh init zsh --config ${config.home.homeDirectory}/.cache/wal/ohmyposh.toml)"
|
|
||||||
'';
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file.".config/wal/templates/ohmyposh.toml".text = ''
|
|
||||||
#:schema https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json
|
|
||||||
|
|
||||||
version = 2
|
|
||||||
final_space = true
|
|
||||||
console_title_template = '{{{{ .Shell }}}} in {{{{ .Folder }}}}'
|
|
||||||
|
|
||||||
[[blocks]]
|
|
||||||
type = 'prompt'
|
|
||||||
alignment = 'left'
|
|
||||||
newline = true
|
|
||||||
|
|
||||||
[[blocks.segments]]
|
|
||||||
type = 'os'
|
|
||||||
style = 'diamond'
|
|
||||||
trailing_diamond = ''
|
|
||||||
background = 'p:c1'
|
|
||||||
foreground = 'p:c12'
|
|
||||||
template = ' {{{{ .Icon }}}} '
|
|
||||||
|
|
||||||
[[blocks.segments]]
|
|
||||||
type = 'session'
|
|
||||||
style = 'diamond'
|
|
||||||
trailing_diamond = ''
|
|
||||||
background = 'p:c2'
|
|
||||||
foreground = 'p:c14'
|
|
||||||
template = '{{{{ .UserName }}}}@{{{{ .HostName }}}}'
|
|
||||||
|
|
||||||
[[blocks.segments]]
|
|
||||||
type = 'path'
|
|
||||||
style = 'diamond'
|
|
||||||
trailing_diamond = ''
|
|
||||||
background = 'p:c4'
|
|
||||||
foreground = 'p:c13'
|
|
||||||
template = '{{{{ .Path }}}}'
|
|
||||||
|
|
||||||
[blocks.segments.properties]
|
|
||||||
style = 'full'
|
|
||||||
|
|
||||||
[[blocks]]
|
|
||||||
type = 'prompt'
|
|
||||||
overflow = 'hidden'
|
|
||||||
alignment = 'right'
|
|
||||||
|
|
||||||
[[blocks.segments]]
|
|
||||||
type = 'executiontime'
|
|
||||||
style = 'diamond'
|
|
||||||
leading_diamond = ''
|
|
||||||
background = 'p:c4'
|
|
||||||
foreground = 'p:c13'
|
|
||||||
template = '{{{{ .FormattedMs }}}}'
|
|
||||||
|
|
||||||
[[blocks.segments]]
|
|
||||||
type = 'time'
|
|
||||||
style = 'diamond'
|
|
||||||
leading_diamond = ''
|
|
||||||
background = 'p:c2'
|
|
||||||
foreground = 'p:c14'
|
|
||||||
|
|
||||||
[[blocks.segments]]
|
|
||||||
type = 'shell'
|
|
||||||
style = 'diamond'
|
|
||||||
leading_diamond = ''
|
|
||||||
background = 'p:c1'
|
|
||||||
foreground = 'p:c12'
|
|
||||||
|
|
||||||
[[blocks]]
|
|
||||||
type = 'prompt'
|
|
||||||
alignment = 'left'
|
|
||||||
newline = true
|
|
||||||
|
|
||||||
[[blocks.segments]]
|
|
||||||
type = 'text'
|
|
||||||
style = 'plain'
|
|
||||||
background = 'transparent'
|
|
||||||
foreground_templates = [
|
|
||||||
"{{{{ if gt .Code 0 }}}}p:c13{{{{end}}}}",
|
|
||||||
"{{{{ if eq .Code 0 }}}}p:c14{{{{end}}}}",
|
|
||||||
]
|
|
||||||
template = "{{{{ if gt .Code 0 }}}}!❭ {{{{else}}}}❭ {{{{end}}}}"
|
|
||||||
|
|
||||||
[transient_prompt]
|
|
||||||
foreground_templates = [
|
|
||||||
"{{{{ if gt .Code 0 }}}}p:c13{{{{end}}}}",
|
|
||||||
"{{{{ if eq .Code 0 }}}}p:c14{{{{end}}}}",
|
|
||||||
]
|
|
||||||
background = 'transparent'
|
|
||||||
template = "{{{{ if gt .Code 0 }}}}!❭ {{{{else}}}}❭ {{{{end}}}}"
|
|
||||||
|
|
||||||
[secondary_prompt]
|
|
||||||
background = 'transparent'
|
|
||||||
forground = 'p:c14'
|
|
||||||
template = "❭❭ "
|
|
||||||
|
|
||||||
|
|
||||||
[palette]
|
|
||||||
|
|
||||||
c0 = "{color0}"
|
|
||||||
c1 = "{color1}"
|
|
||||||
c2 = "{color2}"
|
|
||||||
c3 = "{color3}"
|
|
||||||
c4 = "{color4}"
|
|
||||||
c5 = "{color5}"
|
|
||||||
c6 = "{color6}"
|
|
||||||
c7 = "{color7}"
|
|
||||||
c8 = "{color8}"
|
|
||||||
c9 = "{color9}"
|
|
||||||
c10 = "{color10}"
|
|
||||||
c11 = "{color11}"
|
|
||||||
c12 = "{color12}"
|
|
||||||
c13 = "{color13}"
|
|
||||||
c14 = "{color14}"
|
|
||||||
c15 = "{color15}"
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{}: {}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{ ... }: {
|
|
||||||
imports = [
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{ config, lib, osConfig, ... }: {
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./nathan
|
||||||
|
];
|
||||||
|
|
||||||
|
options.homeconfig = {
|
||||||
|
host = lib.options.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
default = osConfig.sysconfig.host;
|
||||||
|
};
|
||||||
|
|
||||||
|
username = lib.options.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.enable = lib.options.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Whether this is a standalone home-manager setup";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {};
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
{ config, lib, pkgs, inputs, ... }: {
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./programs
|
./programs
|
||||||
@@ -7,34 +7,25 @@
|
|||||||
./dotfiles
|
./dotfiles
|
||||||
];
|
];
|
||||||
|
|
||||||
options.homeconfig = {
|
config = lib.mkIf (config.homeconfig.username == "nathan") {
|
||||||
host = lib.options.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.enable = lib.options.mkOption {
|
homeconfig = {
|
||||||
type = lib.types.bool;
|
mpd.enable = lib.mkDefault true;
|
||||||
default = false;
|
calcurse.enable = lib.mkDefault true;
|
||||||
|
git.enable = lib.mkDefault true;
|
||||||
|
nh.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
|
|
||||||
home.stateVersion = "23.11";
|
home.stateVersion = "23.11";
|
||||||
|
|
||||||
home.username = "nathan";
|
home.pointerCursor = lib.mkIf config.homeconfig.graphical {
|
||||||
|
|
||||||
home.homeDirectory = "/home/nathan";
|
|
||||||
|
|
||||||
home.pointerCursor = {
|
|
||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
package = pkgs.bibata-cursors;
|
package = pkgs.bibata-cursors;
|
||||||
name = "Bibata-Modern-Classic";
|
name = "Bibata-Modern-Classic";
|
||||||
size = 16;
|
size = 16;
|
||||||
};
|
};
|
||||||
|
|
||||||
gtk = {
|
gtk = lib.mkIf config.homeconfig.graphical {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme.name = "Tokyonight-Dark";
|
theme.name = "Tokyonight-Dark";
|
||||||
theme.package = pkgs.tokyonight-gtk-theme;
|
theme.package = pkgs.tokyonight-gtk-theme;
|
||||||
@@ -43,16 +34,26 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
age.keyFile = "/home/nathan/.config/sops/age/keys.txt";
|
age.keyFile = "${config.home.homeDirectory}/.config/sops/age/keys.txt";
|
||||||
defaultSopsFile = ./secrets.yaml;
|
defaultSopsFile = ./secrets.yaml;
|
||||||
defaultSopsFormat = "yaml";
|
defaultSopsFormat = "yaml";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||||
|
settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
distributedBuilds = config.sysconfig.remoteBuildClient;
|
||||||
|
buildMachines = lib.mkIf config.sysconfig.remoteBuildClient {};
|
||||||
|
|
||||||
|
trusted-users = lib.mkIf config.sysconfig.remoteBuildHost [ config.users.users."remote-builder".name ];
|
||||||
|
};
|
||||||
|
|
||||||
services.mpris-proxy.enable = true;
|
services.mpris-proxy.enable = true;
|
||||||
|
|
||||||
programs.ssh.enable = true;
|
programs.ssh.enable = true;
|
||||||
|
|
||||||
programs.home-manager.enable = config.homeconfig.home-manager.enable;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
".config/hypr" = { source = ./hypr; recursive = true; };
|
".config/hypr" = { source = ./hypr; recursive = true; };
|
||||||
".config/swaylock" = { source = ./swaylock; recursive = true; };
|
".config/swaylock" = { source = ./swaylock; recursive = true; };
|
||||||
".config/wal/templates" = { source = ./wal/templates; recursive = true; };
|
".config/wal/templates" = { source = ./wal/templates; recursive = true; };
|
||||||
".config/zsh" = { source = ./zsh; recursive = true; };
|
".config/ohmyposh" = { source = ./ohmyposh; recursive = true; };
|
||||||
"Pictures/Wallpaper" = { source = ./Wallpaper; recursive = true; };
|
"Pictures/Wallpaper" = { source = ./Wallpaper; recursive = true; };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -17,9 +17,12 @@
|
|||||||
default = false;
|
default = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkMerge [
|
config = {
|
||||||
|
|
||||||
|
nixpkgs.config = lib.mkIf (!config.homeconfig.minimal) {
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
killall
|
killall
|
||||||
btop
|
btop
|
||||||
@@ -28,85 +31,68 @@
|
|||||||
gcc
|
gcc
|
||||||
zulu
|
zulu
|
||||||
rsync
|
rsync
|
||||||
lxqt.lxqt-policykit
|
|
||||||
blueberry
|
|
||||||
wl-clipboard
|
|
||||||
xfce.thunar
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
curl
|
curl
|
||||||
wget
|
wget
|
||||||
];
|
] ++ (if config.homeconfig.graphical then [
|
||||||
}
|
grim
|
||||||
|
slurp
|
||||||
|
xfce.thunar
|
||||||
|
wl-clipboard
|
||||||
|
blueberry
|
||||||
|
lxqt.lxqt-policykit
|
||||||
|
] else []) ++ (if !config.homeconfig.minimal then [
|
||||||
|
cava
|
||||||
|
android-tools
|
||||||
|
neovim-remote
|
||||||
|
|
||||||
(lib.mkIf (!config.homeconfig.minimal) {
|
(python312.withPackages (ps: with ps; [
|
||||||
|
|
||||||
nixpkgs.config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; let
|
|
||||||
pypkgs = ps: with ps; [
|
|
||||||
numpy
|
numpy
|
||||||
matplotlib
|
matplotlib
|
||||||
scipy
|
scipy
|
||||||
|
|
||||||
pandas
|
pandas
|
||||||
pyaudio
|
pyaudio
|
||||||
pyusb
|
pyusb
|
||||||
debugpy
|
debugpy
|
||||||
requests
|
requests
|
||||||
];
|
]))
|
||||||
|
|
||||||
in [
|
fastfetch
|
||||||
|
ncmpcpp
|
||||||
|
playerctl
|
||||||
|
mpc-cli
|
||||||
|
ffmpeg
|
||||||
|
|
||||||
cava
|
] else []) ++ (if !config.homeconfig.minimal && config.homeconfig.graphical then [
|
||||||
android-tools
|
|
||||||
neovim-remote
|
|
||||||
handbrake
|
handbrake
|
||||||
quickemu
|
quickemu
|
||||||
bottles
|
bottles
|
||||||
|
|
||||||
(pkgs.python312.withPackages pypkgs)
|
|
||||||
|
|
||||||
brightnessctl
|
brightnessctl
|
||||||
libdbusmenu-gtk3
|
libdbusmenu-gtk3
|
||||||
lmms
|
lmms
|
||||||
#unfree {
|
|
||||||
|
#unfree {
|
||||||
geogebra
|
geogebra
|
||||||
spotify
|
spotify
|
||||||
pkgs-us.rustdesk-flutter
|
pkgs-us.rustdesk-flutter
|
||||||
#}
|
#}
|
||||||
|
|
||||||
neofetch
|
|
||||||
pkgs-us.mpv
|
pkgs-us.mpv
|
||||||
ncmpcpp
|
|
||||||
playerctl
|
|
||||||
mpc-cli
|
|
||||||
vlc
|
vlc
|
||||||
pavucontrol
|
pavucontrol
|
||||||
yewtube
|
|
||||||
ytmdl
|
|
||||||
ffmpeg
|
|
||||||
rpi-imager
|
rpi-imager
|
||||||
tigervnc
|
tigervnc
|
||||||
keepassxc
|
keepassxc
|
||||||
httplz
|
|
||||||
|
|
||||||
#3D modeling/printing
|
#3D modeling/printing
|
||||||
blender
|
blender
|
||||||
freecad-wayland
|
freecad-wayland
|
||||||
cura-appimage
|
cura-appimage
|
||||||
|
|
||||||
#productivity
|
#productivity
|
||||||
libreoffice
|
libreoffice
|
||||||
super-productivity
|
|
||||||
|
|
||||||
#games
|
#games
|
||||||
prismlauncher
|
prismlauncher
|
||||||
];
|
] else []);
|
||||||
|
};
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,24 +67,6 @@
|
|||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = 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";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.displayManager.sddm.settings.AutoLogin = {
|
services.displayManager.sddm.settings.AutoLogin = {
|
||||||
User = "nathan";
|
User = "nathan";
|
||||||
Session = "hyprland";
|
Session = "hyprland";
|
||||||
@@ -121,12 +103,6 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
nix = {
|
|
||||||
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
|
||||||
settings = {
|
|
||||||
experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
age.keyFile = "/home/nathan/.config/sops/age/keys.txt";
|
age.keyFile = "/home/nathan/.config/sops/age/keys.txt";
|
||||||
@@ -140,7 +116,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.fuse.userAllowOther = true;
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
backupFileExtension = "backup";
|
backupFileExtension = "backup";
|
||||||
|
|||||||
@@ -6,4 +6,96 @@
|
|||||||
./programs
|
./programs
|
||||||
];
|
];
|
||||||
|
|
||||||
|
options.sysconfig = with lib; {
|
||||||
|
host = mkOption {
|
||||||
|
type = with types; nullOr str;
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
graphical = mkOption {
|
||||||
|
type = with types; bool;
|
||||||
|
default = config.hardware.graphics.enable;
|
||||||
|
};
|
||||||
|
remoteBuildHost = mkOption {
|
||||||
|
type = with types; bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
remoteBuildClient = mkOption {
|
||||||
|
type = with types; bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = let
|
||||||
|
dirs = (builtins.partition
|
||||||
|
(x: ((builtins.readDir ./configuration).${x} == "directory" && (import x).config.sysconfig.host != config.sysconfig.host))
|
||||||
|
(builtins.attrNames (builtins.readDir ./configuration))
|
||||||
|
).right;
|
||||||
|
|
||||||
|
rbHosts = (builtins.listToAttrs
|
||||||
|
(builtins.map
|
||||||
|
(x: let
|
||||||
|
host = import x;
|
||||||
|
in {
|
||||||
|
name = x;
|
||||||
|
value = {
|
||||||
|
hostName = host.config.networking.hostName;
|
||||||
|
sshUser = "remote-builder";
|
||||||
|
sshKey = config.sops.secrets."remoteBuildSSHKey".path;
|
||||||
|
supportedFeatures = [
|
||||||
|
"nixos-test"
|
||||||
|
"benchmark"
|
||||||
|
"big-parallel"
|
||||||
|
"kvm"
|
||||||
|
];
|
||||||
|
system = pkgs.stdenv.hostPlatform.system;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
dirs
|
||||||
|
)
|
||||||
|
);
|
||||||
|
in {
|
||||||
|
|
||||||
|
sops.secrets."remoteBuildSSHKey" = lib.mkIf config.sysconfig.remoteBuildClient {};
|
||||||
|
|
||||||
|
networking.hostName = lib.mkDefault config.sysconfig.host;
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||||
|
channel.enable = false;
|
||||||
|
settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
distributedBuilds = config.sysconfig.remoteBuildClient;
|
||||||
|
buildMachines = lib.mkIf config.sysconfig.remoteBuildClient {};
|
||||||
|
|
||||||
|
trusted-users = lib.mkIf config.sysconfig.remoteBuildHost [ config.users.users."remote-builder".name ];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc = lib.mkIf config.sysconfig.remoteBuildHost {};
|
||||||
|
|
||||||
|
users.users."remote-builder" = lib.mkIf config.sysconfig.remoteBuildHost {
|
||||||
|
isNormalUser = true;
|
||||||
|
createHome = false;
|
||||||
|
openssh.authorizedKeys.keyFiles = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = lib.mkDefault "America/Chicago";
|
||||||
|
|
||||||
|
i18n = lib.mkDefault {
|
||||||
|
defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
networking.firewall.allowedTCPPorts = [
|
||||||
22
|
22
|
||||||
2222
|
|
||||||
];
|
];
|
||||||
|
|
||||||
containers.gitea = {
|
containers.gitea = {
|
||||||
|
|||||||
@@ -7,12 +7,11 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.sysconfig.services.openssh.enable {
|
config = lib.mkIf (config.sysconfig.services.openssh.enable || config.sysconfig.remoteBuildHost) {
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ 22 ];
|
|
||||||
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
settings = {
|
settings = {
|
||||||
PermitRootLogin = lib.mkForce "no";
|
PermitRootLogin = lib.mkForce "no";
|
||||||
PasswordAuthentication = false;
|
PasswordAuthentication = false;
|
||||||
|
|||||||
@@ -1,46 +1,62 @@
|
|||||||
{ config, lib, inputs, ... }: {
|
{ config, lib, pkgs, inputs, ... }: {
|
||||||
|
|
||||||
options.sysconfig = {
|
options.sysconfig = with lib; {
|
||||||
users = let
|
users = let
|
||||||
|
|
||||||
userType = lib.types.submodule ({ username, ... }: {
|
userType = types.submodule ({ username, ... }: {
|
||||||
options = {
|
options = {
|
||||||
username = lib.mkOption {
|
username = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = with types; str;
|
||||||
default = username;
|
default = username;
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
enable = lib.mkOption {
|
enable = lib.mkOption {
|
||||||
type = lib.types.bool;
|
type = with types; bool;
|
||||||
default = false;
|
default = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
standalone = lib.mkOption {
|
||||||
|
type = with types; bool;
|
||||||
|
default = false;
|
||||||
|
description = "is this home-manager standalone?";
|
||||||
|
};
|
||||||
|
|
||||||
extraModules = lib.mkOption {
|
extraModules = lib.mkOption {
|
||||||
type = lib.types.listOf lib.types.raw;
|
type = with types; listOf raw;
|
||||||
default = [];
|
default = [];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sshKeys = lib.mkOption {
|
sshKeys = lib.mkOption {
|
||||||
type = lib.types.listOf lib.types.str;
|
type = with types; listOf str;
|
||||||
default = [];
|
default = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uid = lib.mkOption {
|
||||||
|
type = with types; nullOr int;
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
|
||||||
hashedPasswordFile = lib.mkOption {
|
hashedPasswordFile = lib.mkOption {
|
||||||
type = lib.types.nullOr lib.types.str;
|
type = with types; nullOr str;
|
||||||
default = null;
|
default = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
extraGroups = lib.mkOption {
|
extraGroups = lib.mkOption {
|
||||||
type = lib.types.listOf lib.types.str;
|
type = with types; listOf str;
|
||||||
default = [];
|
default = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
shell = lib.mkOption {
|
||||||
|
type = with types; package;
|
||||||
|
default = pkgs.shadow;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
in lib.mkOption {
|
in lib.mkOption {
|
||||||
type = lib.types.attrsOf userType;
|
type = userType;
|
||||||
default = {};
|
default = {};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -50,26 +66,38 @@
|
|||||||
users.users = builtins.mapAttrs (name: user: {
|
users.users = builtins.mapAttrs (name: user: {
|
||||||
name = user.username;
|
name = user.username;
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
|
uid = user.uid;
|
||||||
hashedPasswordFile = lib.mkIf (user.hashedPasswordFile != null) user.hashedPasswordFile;
|
hashedPasswordFile = lib.mkIf (user.hashedPasswordFile != null) user.hashedPasswordFile;
|
||||||
|
shell = user.shell;
|
||||||
extraGroups = user.extraGroups;
|
extraGroups = user.extraGroups;
|
||||||
openssh.authorizedKeys.keys = lib.mkIf config.sysconfig.services.openssh.enable config.sysconfig.users.${user.username}.sshKeys;
|
openssh.authorizedKeys.keys = lib.mkIf config.sysconfig.services.openssh.enable user.sshKeys;
|
||||||
|
packages = with pkgs; lib.mkIf (user.home-manager.enable && user.home-manager.standalone) [ home-manager ];
|
||||||
}) config.sysconfig.users;
|
}) config.sysconfig.users;
|
||||||
|
|
||||||
|
programs.fuse.userAllowOther = true;
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
backupFileExtension = "backup";
|
backupFileExtension = "backup";
|
||||||
extraSpecialArgs = {inherit inputs;};
|
extraSpecialArgs = { inherit inputs; };
|
||||||
sharedModules = [
|
sharedModules = [
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
inputs.home-manager-config
|
inputs.home-manager-config
|
||||||
];
|
];
|
||||||
users = (builtins.mapAttrs
|
users = (builtins.mapAttrs
|
||||||
(name: user: (lib.mkMerge [
|
(name: user: (lib.mkMerge [
|
||||||
(inputs.${user.username} { config = config.home-manager.users.${user.username}; inherit lib; })
|
{
|
||||||
] ++ user.home-manager.extraModules))
|
homeconfig = {
|
||||||
|
host = config.sysconfig.host;
|
||||||
|
username = user.username;
|
||||||
|
graphical = config.sysconfig.graphical;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
] ++ (if inputs ? ${user.username} then [ (inputs.${user.username} { config = config.home-manager.users.${user.username}; }) ] else [])
|
||||||
|
++ user.home-manager.extraModules))
|
||||||
(builtins.removeAttrs
|
(builtins.removeAttrs
|
||||||
config.sysconfig.users
|
config.sysconfig.users
|
||||||
(builtins.partition
|
(builtins.partition
|
||||||
(name: config.sysconfig.users.${name}.home-manager.enable == true)
|
(name: (config.sysconfig.users.${name}.home-manager.enable && !config.sysconfig.users.${name}.home-manager.standalone))
|
||||||
(builtins.attrNames config.sysconfig.users)
|
(builtins.attrNames config.sysconfig.users)
|
||||||
).wrong
|
).wrong
|
||||||
)
|
)
|
||||||
|
|||||||