aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nixos/.flake/flake.nix2
-rw-r--r--nixos/.flake/home.nix538
-rw-r--r--nixos/.flake/home/core.nix17
-rw-r--r--nixos/.flake/home/cursor.nix8
-rw-r--r--nixos/.flake/home/fonts.nix9
-rw-r--r--nixos/.flake/home/hyprland.nix122
-rw-r--r--nixos/.flake/home/programs/core.nix31
-rw-r--r--nixos/.flake/home/programs/fastfetch.nix79
-rw-r--r--nixos/.flake/home/programs/foot.nix37
-rw-r--r--nixos/.flake/home/programs/git.nix9
-rw-r--r--nixos/.flake/home/programs/hyprlock.nix37
-rw-r--r--nixos/.flake/home/programs/ncmpcpp.nix23
-rw-r--r--nixos/.flake/home/programs/ssh.nix8
-rw-r--r--nixos/.flake/home/programs/waybar.nix146
-rw-r--r--nixos/.flake/home/programs/zsh.nix47
-rw-r--r--nixos/.flake/home/services/core.nix13
-rw-r--r--nixos/.flake/home/services/mpd.nix16
-rw-r--r--nixos/.flake/home/services/syncthing.nix7
-rw-r--r--nixos/.flake/system/boot.nix6
-rw-r--r--nixos/.flake/system/core.nix138
-rw-r--r--nixos/.flake/system/desktop.nix54
-rw-r--r--nixos/.flake/system/locale.nix6
-rw-r--r--nixos/.flake/system/network.nix15
-rw-r--r--nixos/.flake/system/users.nix9
24 files changed, 709 insertions, 668 deletions
diff --git a/nixos/.flake/flake.nix b/nixos/.flake/flake.nix
index a8a2fea..e75cffd 100644
--- a/nixos/.flake/flake.nix
+++ b/nixos/.flake/flake.nix
@@ -21,7 +21,7 @@
home-manager.backupFileExtension = "bak";
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
- home-manager.users.jane = import ./home.nix;
+ home-manager.users.jane = import ./home/core.nix;
}
];
};
diff --git a/nixos/.flake/home.nix b/nixos/.flake/home.nix
deleted file mode 100644
index 1f06c1b..0000000
--- a/nixos/.flake/home.nix
+++ /dev/null
@@ -1,538 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- home.username = "jane";
- home.homeDirectory = "/home/jane";
-
- home.file.".icons/default".source = "${pkgs.vanilla-dmz}/share/icons/Vanilla-DMZ";
- xresources.properties = {
- "Xcursor.size" = 16;
- };
-
- fonts.fontconfig.enable = true;
- home.packages = with pkgs; [
- python3
- texliveFull
- obs-studio
- prismlauncher
- discord
- hyprshot
- (pkgs.nerdfonts.override { fonts = [ "SourceCodePro" ]; })
- fuzzel
- hyfetch
- htop
- networkmanagerapplet
- mako
- emacs
- swaybg
- mpdscribble
- pavucontrol
- mpc-cli
- cm_unicode
- ];
-
- programs.ssh = {
- enable = true;
- addKeysToAgent = "yes";
- };
-
- services.syncthing = {
- enable = true;
- };
-
- programs.hyprlock = {
- enable = true;
- settings = {
- general = {
- disable_loading_bar = true;
- grace = 0;
- hide_cursor = true;
- no_fade_in = false;
- };
- background = [
- {
- path = "~/.wallpaper";
- blur_passes = 3;
- blur_size = 8;
- }
- ];
- input-field = [
- {
- size = "200, 50";
- position = "0, -80";
- monitor = "";
- dots_center = true;
- fade_on_empty = false;
- font_color = "rgb(202, 211, 245)";
- inner_color = "rgb(91, 96, 120)";
- outer_color = "rgb(24, 25, 38)";
- outline_thickness = 5;
- placeholder_text = "<span foreground=\"##cad3f5\">Password...</span>";
- shadow_passes = 2;
- }
- ];
- };
- };
-
- programs.ncmpcpp = {
- enable = true;
- bindings = [
- { key = "j"; command = "scroll_down"; }
- { key = "k"; command = "scroll_up"; }
- { key = "h"; command = "previous_column"; }
- { key = "l"; command = "next_column"; }
- { key = "g"; command = "move_home"; }
- { key = "G"; command = "move_end"; }
- { key = "n"; command = "next_found_item"; }
- { key = "N"; command = "previous_found_item"; }
- ];
- mpdMusicDir = "~/Music";
- settings = {
- ncmpcpp_directory = "~/.config/nmcpcpp";
- mpd_host = "localhost";
- mpd_port = "6600";
- };
- };
-
- services.mpd = {
- enable = true;
- musicDirectory = "~/Music";
- extraConfig = ''
- audio_output {
- type "pipewire"
- name "Pipewire"
- mixer_type "hardware"
- enabled "yes"
- }
- '';
- };
-
- programs.waybar = {
- enable = true;
- settings = {
- mainBar = {
- height = 30;
- spacing = 4;
- modules-left = [ "hyprland/workspaces" ];
- modules-center = [ "hyprland/window" ];
- modules-right = [ "mpd" "pulseaudio" "cpu" "memory" "clock" "tray" ];
- mpd = {
- format = "{stateIcon} {artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) [{songPosition}|{queueLength}] 🎵";
- format-disconnected = "Disconnected 🎵";
- format-stopped = "{consumeIcon}Stopped 🎵";
- unknown-tag = "N/A";
- interval = 2;
- state-icons = {
- paused = "";
- playing = "";
- };
- tooltip-format = "MPD (connected)";
- tooltip-format-disconnected = "MPD (disconnected)";
- on-click = "foot -e ncmpcpp";
- };
- tray = {
- icon-size = 21;
- spacing = 10;
- show-passive-items = true;
- };
- clock = {
- format = "{:%H:%M\t%Y-%m-%d}";
- tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
- };
- cpu = {
- format = "{usage}% ";
- tooltip = false;
- };
- memory = {
- format = "{}% ";
- };
- network = {
- format-wifi = "";
- tooltip = false;
- format-ethernet = "";
- format-linked = "";
- format-disconnected = "⚠";
- on-click = "kcmshell5 kcm_networkmanagement";
- };
- pulseaudio = {
- format = "{volume}% {icon}";
- format-bluetooth = "{volume}% {icon}";
- format-bluetooth-muted = " {icon}";
- format-muted = " ";
- format-source = "{volume}% ";
- format-source-muted = "";
- format-icons = {
- headphone = "";
- hands-free = "";
- headset = "";
- phone = "";
- portable = "";
- car = "";
- default = ["" "" ""];
- };
- on-click = "pavucontrol";
- };
- };
- };
- style = ''
- window#waybar {
- font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
- font-size: 13px;
- background: transparent;
- color: #ffffff;
- text-shadow: 1px 1px #64727D;
- transition-property: background-color;
- transition-duration: .5s;
- }
- button {
- border: none;
- border-radius: 0;
- }
- button:hover {
- background: inherit;
- box-shadow: inset 0 -3px #ffffff;
- }
- #workspaces button {
- padding: 0 5px;
- text-shadow: 1px 1px #64727D;
- background-color: transparent;
- color: #ffffff;
- }
- #workspaces button:hover {
- background: rgba(0, 0, 0, 0.2);
- }
- #workspaces button.focused {
- background: transparent;
- box-shadow: inset 0 -3px #ffffff;
- }
- #workspaces button.urgent {
- background-color: #eb4d4b;
- }
- #clock,
- #cpu,
- #memory,
- #disk,
- #network,
- #pulseaudio,
- #wireplumber,
- #custom-media,
- #tray,
- #mode,
- #scratchpad,
- #mpd {
- padding: 0 10px;
- }
- #window,
- #workspaces {
- margin: 0 4px;
- }
- .modules-left > widget:first-child > #workspaces {
- margin-left: 0;
- }
-
- /* If workspaces is the rightmost module, omit right margin */
- .modules-right > widget:last-child > #workspaces {
- margin-right: 0;
- }
- #tray > .passive {
- -gtk-icon-effect: dim;
- }
- #tray > .needs-attention {
- -gtk-icon-effect: highlight;
- }
- #scratchpad {
- background: rgba(0, 0, 0, 0.2);
- }
-
- #scratchpad.empty {
- background-color: transparent;
- }
- '';
- };
-
- programs.fastfetch = {
- enable = true;
- settings = {
- logo = {
- type = "raw";
- source = "~/.config/fastfetch/logo.sixel";
- width = 40;
- height = 19;
- };
- display = {
- separator = " ";
- };
- modules = [
- "title"
- {
- type = "custom";
- format = "──────────────────────────────────";
- }
- {
- type = "os";
- key = "";
- }
- {
- type = "kernel";
- key = "󰞸";
- }
- {
- type = "uptime";
- key = "";
- }
- {
- type = "packages";
- key = "";
- }
- {
- type = "shell";
- key = "";
- }
- {
- type = "display";
- key = "󰍹";
- }
- {
- type = "wm";
- key = "";
- }
- {
- type = "terminal";
- key = "";
- }
- {
- type = "cpu";
- key = "";
- }
- {
- type = "gpu";
- key = "";
- }
- {
- type = "memory";
- key = "";
- }
- {
- type = "disk";
- key = "";
- }
- {
- type = "locale";
- key = "";
- }
- "break"
- "colors"
- ];
- };
- };
-
- programs.zsh = {
- enable = true;
- autocd = true;
- autosuggestion = {
- enable = true;
- # highlight = "fg=#ff00ff,bg=cyan,bold,underline";
- };
- defaultKeymap = "viins";
- history = {
- append = true;
- ignoreAllDups = true;
- };
- shellAliases = {
- "ll" = "ls -alF";
- "la" = "ls -a";
- "l" = "ls -F";
- "sl" = "ls";
- };
- syntaxHighlighting.enable = true;
- initExtra = ''
- which lesspipe.sh &> /dev/null && export LESSOPEN="|lesspipe.sh %s"
- which eza &> /dev/null && alias ls=eza
- which nvim &> /dev/null && alias vi=nvim && alias vim=nvim
- parse_git_dirty() {
- git_status="$(git status 2> /dev/null)"
- [[ "$git_status" =~ "use \"git push\" to publish your local commits" ]] && echo -n " %F{green}%f"
- [[ "$git_status" =~ "Changes to be committed:" ]] && echo -n " %F{magenta}%f"
- [[ "$git_status" =~ "Changes not staged for commit:" ]] && echo -n " %F{yellow}%f"
- [[ "$git_status" =~ "Untracked files:" ]] && echo -n " %F{red}%f"
- }
- setopt prompt_subst
- autoload -Uz vcs_info
- precmd () { vcs_info }
- zstyle ':vcs_info:*' formats ' %F{blue}%b%f' # git(main)
- PS1='%(?..%B%F{red}[%?%\]%f%b )%F{green}%20<...<%~%<<%f$vcs_info_msg_0_$(parse_git_dirty) $ '
- '';
- profileExtra = ''
- if [ ! -S ~/.ssh/ssh_auth_sock ]; then
- eval `ssh-agent` > /dev/null
- ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
- fi
- export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
- '';
- };
-
- programs.git = {
- enable = true;
- userName = "Jacob Janzen";
- userEmail = "jacob.a.s.janzen@gmail.com";
- };
-
- programs.foot.enable = true;
- programs.foot.settings = {
- main = {
- font = "SauceCodePro Nerd Font:size=10";
- pad = "6x6";
- };
- mouse = {
- hide-when-typing = "yes";
- };
- colors = {
- alpha = "0.9";
- background = "ece0c9";
- foreground = "191916";
- regular0 = "191916";
- regular1 = "ac4438";
- regular2 = "354d52";
- regular3 = "ba9151";
- regular4 = "465b91";
- regular5 = "5b5489";
- regular6 = "4e6062";
- regular7 = "c9ad7a";
- bright0 = "293c3c";
- bright1 = "d8611c";
- bright2 = "4b7b53";
- bright3 = "d8974b";
- bright4 = "2f3d91";
- bright5 = "735e82";
- bright6 = "6b8f92";
- bright7 = "ece0c9";
- };
- };
-
- wayland.windowManager.hyprland.enable = true;
- wayland.windowManager.hyprland.settings = {
- monitor = [ "DP-2, 2560x1440@180, 0x0, 1" "HDMI-A-2, 1920x1080@60, -1080x-100, 1, transform, 3" ];
- "$terminal" = "foot";
- "$fileManager" = "dolphin";
- "$menu" = "fuzzel";
- exec-once = [
- "nm-applet &"
- "blueman-applet &"
- "waybar"
- "mako"
- "emacs --daemon"
- "swaybg -m fill -i ~/.wallpaper"
- "mpdscribble"
- ];
- env = [
- "XCURSOR_SIZE,24"
- "HYPRCURSOR_SIZE,24"
- ];
- general = {
- gaps_in = 5;
- gaps_out = 20;
- border_size = 2;
- resize_on_border = false;
- layout = "dwindle";
- "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
- "col.inactive_border" = "rgba(595959aa)";
- };
- decoration = {
- rounding = 10;
- active_opacity = 1.0;
- inactive_opacity = 1.0;
- drop_shadow = true;
- shadow_range = 4;
- shadow_render_power = 3;
- "col.shadow" = "rgba(1a1a1aee)";
- blur = {
- enabled = true;
- size = 3;
- passes = 1;
- vibrancy = "0.1696";
- };
- };
- animations = {
- enabled = true;
- bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
- animation = [
- "windows, 1, 7, myBezier"
- "windowsOut, 1, 7, default, popin 80%"
- "border, 1, 10, default" "borderangle, 1, 8, default"
- "fade, 1, 7, default" "workspaces, 1, 6, default"
- ];
- };
- dwindle = {
- pseudotile = true;
- preserve_split = true;
- };
- master = {
- new_status = "master";
- };
- input = {
- kb_layout = "us";
- follow_mouse = 1;
- sensitivity = 0;
- };
- "$mainMod" = "SUPER";
- bind = [
- "$mainMod, RETURN, exec, $terminal"
- "$mainMod SHIFT, Q, killactive"
- "$mainMod, E, exec, $fileManager"
- "$mainMod SHIFT, SPACE, togglefloating"
- "$mainMod, D, exec, $menu"
- "$mainMod, P, pseudo"
- "$mainMod SHIFT, E, togglesplit"
- "$mainMod, H, movefocus, l"
- "$mainMod, J, movefocus, d"
- "$mainMod, K, movefocus, u"
- "$mainMod, L, movefocus, r"
- "$mainMod, 1, workspace, 1"
- "$mainMod, 2, workspace, 2"
- "$mainMod, 3, workspace, 3"
- "$mainMod, 4, workspace, 4"
- "$mainMod, 5, workspace, 5"
- "$mainMod, 6, workspace, 6"
- "$mainMod, 7, workspace, 7"
- "$mainMod, 8, workspace, 8"
- "$mainMod, 9, workspace, 9"
- "$mainMod, 0, workspace, 10"
- "$mainMod SHIFT, 1, movetoworkspace, 1"
- "$mainMod SHIFT, 2, movetoworkspace, 2"
- "$mainMod SHIFT, 3, movetoworkspace, 3"
- "$mainMod SHIFT, 4, movetoworkspace, 4"
- "$mainMod SHIFT, 5, movetoworkspace, 5"
- "$mainMod SHIFT, 6, movetoworkspace, 6"
- "$mainMod SHIFT, 7, movetoworkspace, 7"
- "$mainMod SHIFT, 8, movetoworkspace, 8"
- "$mainMod SHIFT, 9, movetoworkspace, 9"
- "$mainMod SHIFT, 0, movetoworkspace, 10"
- "$mainMod CONTROL, L, exec, hyprlock"
- "$mainMod, S, exec, hyprshot -m window --clipboard-only"
- "$mainMod SHIFT, S, exec, hyprshot -m region --clipboard-only"
- "$mainMod SHIFT CONTROL, S, exec, hyprshot -m output --clipboard-only"
- ];
- bindel = [
- ",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
- ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
- ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
- ",XF86Eject, exec, mpc toggle"
- ];
- bindm = [
- "$mainMod, mouse:272, movewindow"
- "$mainMod, mouse:273, resizewindow"
- ];
- windowrulev2 = "suppressevent maximize, class:.*";
- };
- wayland.windowManager.hyprland.extraConfig = ''
-###################
-### KEYBINDINGS ###
-###################
-# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
-bind = $mainMod, M, exit,
- '';
-
- home.stateVersion = "24.05";
-
- programs.home-manager.enable = true;
-}
diff --git a/nixos/.flake/home/core.nix b/nixos/.flake/home/core.nix
new file mode 100644
index 0000000..cfba834
--- /dev/null
+++ b/nixos/.flake/home/core.nix
@@ -0,0 +1,17 @@
+{ config, pkgs, ... }:
+
+{
+ imports = [
+ ./cursor.nix
+ ./fonts.nix
+ ./hyprland.nix
+ ./programs/core.nix
+ ./services/core.nix
+ ];
+
+ home.username = "jane";
+ home.homeDirectory = "/home/jane";
+
+ home.stateVersion = "24.05";
+ programs.home-manager.enable = true;
+}
diff --git a/nixos/.flake/home/cursor.nix b/nixos/.flake/home/cursor.nix
new file mode 100644
index 0000000..b7b55c4
--- /dev/null
+++ b/nixos/.flake/home/cursor.nix
@@ -0,0 +1,8 @@
+{ config, pkgs, ... }:
+
+{
+ home.file.".icons/default".source = "${pkgs.vanilla-dmz}/share/icons/Vanilla-DMZ";
+ xresources.properties = {
+ "Xcursor.size" = 16;
+ };
+}
diff --git a/nixos/.flake/home/fonts.nix b/nixos/.flake/home/fonts.nix
new file mode 100644
index 0000000..420f1d8
--- /dev/null
+++ b/nixos/.flake/home/fonts.nix
@@ -0,0 +1,9 @@
+{ config, pkgs, ... }:
+
+{
+ fonts.fontconfig.enable = true;
+ home.packages = with pkgs; [
+ cm_unicode
+ (pkgs.nerdfonts.override { fonts = [ "SourceCodePro" ]; })
+ ];
+}
diff --git a/nixos/.flake/home/hyprland.nix b/nixos/.flake/home/hyprland.nix
new file mode 100644
index 0000000..014edf3
--- /dev/null
+++ b/nixos/.flake/home/hyprland.nix
@@ -0,0 +1,122 @@
+{ config, pkgs, ... }:
+
+{
+ wayland.windowManager.hyprland = {
+ enable = true;
+ settings = {
+ monitor = [ "DP-2, 2560x1440@180, 0x0, 1" "HDMI-A-2, 1920x1080@60, -1080x-100, 1, transform, 3" ];
+ "$terminal" = "foot";
+ "$fileManager" = "dolphin";
+ "$menu" = "fuzzel";
+ exec-once = [
+ "nm-applet &"
+ "blueman-applet &"
+ "waybar"
+ "mako" # TODO: remove this
+ "emacs --daemon" # TODO: remove this
+ "swaybg -m fill -i ~/.wallpaper"
+ "mpdscribble"
+ ];
+ env = [
+ "XCURSOR_SIZE,24"
+ "HYPRCURSOR_SIZE,24"
+ ];
+ general = {
+ gaps_in = 5;
+ gaps_out = 20;
+ border_size = 2;
+ resize_on_border = false;
+ layout = "dwindle";
+ "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
+ "col.inactive_border" = "rgba(595959aa)";
+ };
+ decoration = {
+ rounding = 10;
+ active_opacity = 1.0;
+ inactive_opacity = 1.0;
+ drop_shadow = true;
+ shadow_range = 4;
+ shadow_render_power = 3;
+ "col.shadow" = "rgba(1a1a1aee)";
+ blur = {
+ enabled = true;
+ size = 3;
+ passes = 1;
+ vibrancy = "0.1696";
+ };
+ };
+ animations = {
+ enabled = true;
+ bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
+ animation = [
+ "windows, 1, 7, myBezier"
+ "windowsOut, 1, 7, default, popin 80%"
+ "border, 1, 10, default" "borderangle, 1, 8, default"
+ "fade, 1, 7, default" "workspaces, 1, 6, default"
+ ];
+ };
+ dwindle = {
+ pseudotile = true;
+ preserve_split = true;
+ };
+ master = {
+ new_status = "master";
+ };
+ input = {
+ kb_layout = "us";
+ follow_mouse = 1;
+ sensitivity = 0;
+ };
+ "$mainMod" = "SUPER";
+ bind = [
+ "$mainMod, RETURN, exec, $terminal"
+ "$mainMod SHIFT, Q, killactive"
+ "$mainMod, E, exec, $fileManager"
+ "$mainMod SHIFT, SPACE, togglefloating"
+ "$mainMod, D, exec, $menu"
+ "$mainMod, P, pseudo"
+ "$mainMod SHIFT, E, togglesplit"
+ "$mainMod, H, movefocus, l"
+ "$mainMod, J, movefocus, d"
+ "$mainMod, K, movefocus, u"
+ "$mainMod, L, movefocus, r"
+ "$mainMod, 1, workspace, 1"
+ "$mainMod, 2, workspace, 2"
+ "$mainMod, 3, workspace, 3"
+ "$mainMod, 4, workspace, 4"
+ "$mainMod, 5, workspace, 5"
+ "$mainMod, 6, workspace, 6"
+ "$mainMod, 7, workspace, 7"
+ "$mainMod, 8, workspace, 8"
+ "$mainMod, 9, workspace, 9"
+ "$mainMod, 0, workspace, 10"
+ "$mainMod SHIFT, 1, movetoworkspace, 1"
+ "$mainMod SHIFT, 2, movetoworkspace, 2"
+ "$mainMod SHIFT, 3, movetoworkspace, 3"
+ "$mainMod SHIFT, 4, movetoworkspace, 4"
+ "$mainMod SHIFT, 5, movetoworkspace, 5"
+ "$mainMod SHIFT, 6, movetoworkspace, 6"
+ "$mainMod SHIFT, 7, movetoworkspace, 7"
+ "$mainMod SHIFT, 8, movetoworkspace, 8"
+ "$mainMod SHIFT, 9, movetoworkspace, 9"
+ "$mainMod SHIFT, 0, movetoworkspace, 10"
+ "$mainMod CONTROL, L, exec, hyprlock"
+ "$mainMod, S, exec, hyprshot -m window --clipboard-only"
+ "$mainMod SHIFT, S, exec, hyprshot -m region --clipboard-only"
+ "$mainMod SHIFT CONTROL, S, exec, hyprshot -m output --clipboard-only"
+ "$mainMod, M, exit"
+ ];
+ bindel = [
+ ",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
+ ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
+ ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
+ ",XF86Eject, exec, mpc toggle"
+ ];
+ bindm = [
+ "$mainMod, mouse:272, movewindow"
+ "$mainMod, mouse:273, resizewindow"
+ ];
+ windowrulev2 = "suppressevent maximize, class:.*";
+ };
+ };
+}
diff --git a/nixos/.flake/home/programs/core.nix b/nixos/.flake/home/programs/core.nix
new file mode 100644
index 0000000..1477274
--- /dev/null
+++ b/nixos/.flake/home/programs/core.nix
@@ -0,0 +1,31 @@
+{ config, pkgs, ... }:
+
+{
+ imports = [
+ ./fastfetch.nix
+ ./foot.nix
+ ./git.nix
+ ./hyprlock.nix
+ ./ncmpcpp.nix
+ ./ssh.nix
+ ./waybar.nix
+ ./zsh.nix
+ ];
+
+ home.packages = with pkgs; [
+ discord # not FOSS
+ emacs # TODO
+ fuzzel # TODO
+ htop
+ hyfetch
+ hyprshot
+ mpc-cli
+ networkmanagerapplet
+ obs-studio
+ pavucontrol
+ prismlauncher # minecraft
+ python3
+ swaybg # TODO
+ texliveFull
+ ];
+}
diff --git a/nixos/.flake/home/programs/fastfetch.nix b/nixos/.flake/home/programs/fastfetch.nix
new file mode 100644
index 0000000..f143bd6
--- /dev/null
+++ b/nixos/.flake/home/programs/fastfetch.nix
@@ -0,0 +1,79 @@
+{ config, pkgs, ... }:
+
+{
+ programs.fastfetch = {
+ enable = true;
+ settings = {
+ logo = {
+ type = "raw";
+ source = "~/.config/fastfetch/logo.sixel";
+ width = 40;
+ height = 19;
+ };
+ display = {
+ separator = " ";
+ };
+ modules = [
+ "title"
+ {
+ type = "custom";
+ format = "──────────────────────────────────";
+ }
+ {
+ type = "os";
+ key = "";
+ }
+ {
+ type = "kernel";
+ key = "󰞸";
+ }
+ {
+ type = "uptime";
+ key = "";
+ }
+ {
+ type = "packages";
+ key = "";
+ }
+ {
+ type = "shell";
+ key = "";
+ }
+ {
+ type = "display";
+ key = "󰍹";
+ }
+ {
+ type = "wm";
+ key = "";
+ }
+ {
+ type = "terminal";
+ key = "";
+ }
+ {
+ type = "cpu";
+ key = "";
+ }
+ {
+ type = "gpu";
+ key = "";
+ }
+ {
+ type = "memory";
+ key = "";
+ }
+ {
+ type = "disk";
+ key = "";
+ }
+ {
+ type = "locale";
+ key = "";
+ }
+ "break"
+ "colors"
+ ];
+ };
+ };
+}
diff --git a/nixos/.flake/home/programs/foot.nix b/nixos/.flake/home/programs/foot.nix
new file mode 100644
index 0000000..18d7263
--- /dev/null
+++ b/nixos/.flake/home/programs/foot.nix
@@ -0,0 +1,37 @@
+{ config, pkgs, ... }:
+
+{
+ programs.foot = {
+ enable = true;
+ settings = {
+ main = {
+ font = "SauceCodePro Nerd Font:size=10";
+ pad = "6x6";
+ };
+ mouse = {
+ hide-when-typing = "yes";
+ };
+ colors = {
+ alpha = "0.9";
+ background = "ece0c9";
+ foreground = "191916";
+ regular0 = "191916";
+ regular1 = "ac4438";
+ regular2 = "354d52";
+ regular3 = "ba9151";
+ regular4 = "465b91";
+ regular5 = "5b5489";
+ regular6 = "4e6062";
+ regular7 = "c9ad7a";
+ bright0 = "293c3c";
+ bright1 = "d8611c";
+ bright2 = "4b7b53";
+ bright3 = "d8974b";
+ bright4 = "2f3d91";
+ bright5 = "735e82";
+ bright6 = "6b8f92";
+ bright7 = "ece0c9";
+ };
+ };
+ };
+}
diff --git a/nixos/.flake/home/programs/git.nix b/nixos/.flake/home/programs/git.nix
new file mode 100644
index 0000000..d9c126a
--- /dev/null
+++ b/nixos/.flake/home/programs/git.nix
@@ -0,0 +1,9 @@
+{ config, pkgs, ... }:
+
+{
+ programs.git = {
+ enable = true;
+ userName = "Jacob Janzen";
+ userEmail = "jacob.a.s.janzen@gmail.com";
+ };
+}
diff --git a/nixos/.flake/home/programs/hyprlock.nix b/nixos/.flake/home/programs/hyprlock.nix
new file mode 100644
index 0000000..175331d
--- /dev/null
+++ b/nixos/.flake/home/programs/hyprlock.nix
@@ -0,0 +1,37 @@
+{ config, pkgs, ... }:
+
+{
+ programs.hyprlock = {
+ enable = true;
+ settings = {
+ general = {
+ disable_loading_bar = true;
+ grace = 0;
+ hide_cursor = true;
+ no_fade_in = false;
+ };
+ background = [
+ {
+ path = "~/.wallpaper";
+ blur_passes = 3;
+ blur_size = 8;
+ }
+ ];
+ input-field = [
+ {
+ size = "200, 50";
+ position = "0, -80";
+ monitor = "";
+ dots_center = true;
+ fade_on_empty = false;
+ font_color = "rgb(202, 211, 245)";
+ inner_color = "rgb(91, 96, 120)";
+ outer_color = "rgb(24, 25, 38)";
+ outline_thickness = 5;
+ placeholder_text = "<span foreground=\"##cad3f5\">Password...</span>";
+ shadow_passes = 2;
+ }
+ ];
+ };
+ };
+}
diff --git a/nixos/.flake/home/programs/ncmpcpp.nix b/nixos/.flake/home/programs/ncmpcpp.nix
new file mode 100644
index 0000000..f9ab2b9
--- /dev/null
+++ b/nixos/.flake/home/programs/ncmpcpp.nix
@@ -0,0 +1,23 @@
+{ config, pkgs, ... }:
+
+{
+ programs.ncmpcpp = {
+ enable = true;
+ bindings = [
+ { key = "j"; command = "scroll_down"; }
+ { key = "k"; command = "scroll_up"; }
+ { key = "h"; command = "previous_column"; }
+ { key = "l"; command = "next_column"; }
+ { key = "g"; command = "move_home"; }
+ { key = "G"; command = "move_end"; }
+ { key = "n"; command = "next_found_item"; }
+ { key = "N"; command = "previous_found_item"; }
+ ];
+ mpdMusicDir = "~/Music";
+ settings = {
+ ncmpcpp_directory = "~/.config/nmcpcpp";
+ mpd_host = "localhost";
+ mpd_port = "6600";
+ };
+ };
+}
diff --git a/nixos/.flake/home/programs/ssh.nix b/nixos/.flake/home/programs/ssh.nix
new file mode 100644
index 0000000..960a5cd
--- /dev/null
+++ b/nixos/.flake/home/programs/ssh.nix
@@ -0,0 +1,8 @@
+{ config, pkgs, ... }:
+
+{
+ programs.ssh = {
+ enable = true;
+ addKeysToAgent = "yes";
+ };
+}
diff --git a/nixos/.flake/home/programs/waybar.nix b/nixos/.flake/home/programs/waybar.nix
new file mode 100644
index 0000000..eb0f135
--- /dev/null
+++ b/nixos/.flake/home/programs/waybar.nix
@@ -0,0 +1,146 @@
+{ config, pkgs, ... }:
+
+{
+ programs.waybar = {
+ enable = true;
+ settings = {
+ mainBar = {
+ height = 30;
+ spacing = 4;
+ modules-left = [ "hyprland/workspaces" ];
+ modules-center = [ "hyprland/window" ];
+ modules-right = [ "mpd" "pulseaudio" "cpu" "memory" "clock" "tray" ];
+ mpd = {
+ format = "{stateIcon} {artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) [{songPosition}|{queueLength}] 🎵";
+ format-disconnected = "Disconnected 🎵";
+ format-stopped = "{consumeIcon}Stopped 🎵";
+ unknown-tag = "N/A";
+ interval = 2;
+ state-icons = {
+ paused = "";
+ playing = "";
+ };
+ tooltip-format = "MPD (connected)";
+ tooltip-format-disconnected = "MPD (disconnected)";
+ on-click = "foot -e ncmpcpp";
+ };
+ tray = {
+ icon-size = 21;
+ spacing = 10;
+ show-passive-items = true;
+ };
+ clock = {
+ format = "{:%H:%M\t%Y-%m-%d}";
+ tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
+ };
+ cpu = {
+ format = "{usage}% ";
+ tooltip = false;
+ };
+ memory = {
+ format = "{}% ";
+ };
+ network = {
+ format-wifi = "";
+ tooltip = false;
+ format-ethernet = "";
+ format-linked = "";
+ format-disconnected = "⚠";
+ on-click = "kcmshell5 kcm_networkmanagement";
+ };
+ pulseaudio = {
+ format = "{volume}% {icon}";
+ format-bluetooth = "{volume}% {icon}";
+ format-bluetooth-muted = " {icon}";
+ format-muted = " ";
+ format-source = "{volume}% ";
+ format-source-muted = "";
+ format-icons = {
+ headphone = "";
+ hands-free = "";
+ headset = "";
+ phone = "";
+ portable = "";
+ car = "";
+ default = ["" "" ""];
+ };
+ on-click = "pavucontrol";
+ };
+ };
+ };
+ style = ''
+ window#waybar {
+ font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ background: transparent;
+ color: #ffffff;
+ text-shadow: 1px 1px #64727D;
+ transition-property: background-color;
+ transition-duration: .5s;
+ }
+ button {
+ border: none;
+ border-radius: 0;
+ }
+ button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+ }
+ #workspaces button {
+ padding: 0 5px;
+ text-shadow: 1px 1px #64727D;
+ background-color: transparent;
+ color: #ffffff;
+ }
+ #workspaces button:hover {
+ background: rgba(0, 0, 0, 0.2);
+ }
+ #workspaces button.focused {
+ background: transparent;
+ box-shadow: inset 0 -3px #ffffff;
+ }
+ #workspaces button.urgent {
+ background-color: #eb4d4b;
+ }
+ #clock,
+ #cpu,
+ #memory,
+ #disk,
+ #network,
+ #pulseaudio,
+ #wireplumber,
+ #custom-media,
+ #tray,
+ #mode,
+ #scratchpad,
+ #mpd {
+ padding: 0 10px;
+ }
+ #window,
+ #workspaces {
+ margin: 0 4px;
+ }
+ .modules-left > widget:first-child > #workspaces {
+ margin-left: 0;
+ }
+
+ /* If workspaces is the rightmost module, omit right margin */
+ .modules-right > widget:last-child > #workspaces {
+ margin-right: 0;
+ }
+ #tray > .passive {
+ -gtk-icon-effect: dim;
+ }
+ #tray > .needs-attention {
+ -gtk-icon-effect: highlight;
+ }
+ #scratchpad {
+ background: rgba(0, 0, 0, 0.2);
+ }
+
+ #scratchpad.empty {
+ background-color: transparent;
+ }
+ '';
+ };
+}
diff --git a/nixos/.flake/home/programs/zsh.nix b/nixos/.flake/home/programs/zsh.nix
new file mode 100644
index 0000000..8b8bfad
--- /dev/null
+++ b/nixos/.flake/home/programs/zsh.nix
@@ -0,0 +1,47 @@
+{ config, pkgs, ... }:
+
+{
+ programs.zsh = {
+ enable = true;
+ autocd = true;
+ autosuggestion = {
+ enable = true;
+ };
+ defaultKeymap = "viins";
+ history = {
+ append = true;
+ ignoreAllDups = true;
+ };
+ shellAliases = {
+ "ll" = "ls -alF";
+ "la" = "ls -a";
+ "l" = "ls -F";
+ "sl" = "ls";
+ };
+ syntaxHighlighting.enable = true;
+ initExtra = ''
+ which lesspipe.sh &> /dev/null && export LESSOPEN="|lesspipe.sh %s"
+ which eza &> /dev/null && alias ls=eza
+ which nvim &> /dev/null && alias vi=nvim && alias vim=nvim
+ parse_git_dirty() {
+ git_status="$(git status 2> /dev/null)"
+ [[ "$git_status" =~ "use \"git push\" to publish your local commits" ]] && echo -n " %F{green}%f"
+ [[ "$git_status" =~ "Changes to be committed:" ]] && echo -n " %F{magenta}%f"
+ [[ "$git_status" =~ "Changes not staged for commit:" ]] && echo -n " %F{yellow}%f"
+ [[ "$git_status" =~ "Untracked files:" ]] && echo -n " %F{red}%f"
+ }
+ setopt prompt_subst
+ autoload -Uz vcs_info
+ precmd () { vcs_info }
+ zstyle ':vcs_info:*' formats ' %F{blue}%b%f' # git(main)
+ PS1='%(?..%B%F{red}[%?%\]%f%b )%F{green}%20<...<%~%<<%f$vcs_info_msg_0_$(parse_git_dirty) $ '
+ '';
+ profileExtra = ''
+ if [ ! -S ~/.ssh/ssh_auth_sock ]; then
+ eval `ssh-agent` > /dev/null
+ ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
+ fi
+ export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
+ '';
+ };
+}
diff --git a/nixos/.flake/home/services/core.nix b/nixos/.flake/home/services/core.nix
new file mode 100644
index 0000000..132e3e6
--- /dev/null
+++ b/nixos/.flake/home/services/core.nix
@@ -0,0 +1,13 @@
+{ config, pkgs, ... }:
+
+{
+ imports = [
+ ./mpd.nix
+ ./syncthing.nix
+ ];
+
+ home.packages = with pkgs; [
+ mako # TODO
+ mpdscribble
+ ];
+}
diff --git a/nixos/.flake/home/services/mpd.nix b/nixos/.flake/home/services/mpd.nix
new file mode 100644
index 0000000..a5a5dc0
--- /dev/null
+++ b/nixos/.flake/home/services/mpd.nix
@@ -0,0 +1,16 @@
+{ config, pkgs, ... }:
+
+{
+ services.mpd = {
+ enable = true;
+ musicDirectory = "~/Music";
+ extraConfig = ''
+ audio_output {
+ type "pipewire"
+ name "Pipewire"
+ mixer_type "hardware"
+ enabled "yes"
+ }
+ '';
+ };
+}
diff --git a/nixos/.flake/home/services/syncthing.nix b/nixos/.flake/home/services/syncthing.nix
new file mode 100644
index 0000000..1eccd8d
--- /dev/null
+++ b/nixos/.flake/home/services/syncthing.nix
@@ -0,0 +1,7 @@
+{ config, pkgs, ... }:
+
+{
+ services.syncthing = {
+ enable = true;
+ };
+}
diff --git a/nixos/.flake/system/boot.nix b/nixos/.flake/system/boot.nix
new file mode 100644
index 0000000..d911b6b
--- /dev/null
+++ b/nixos/.flake/system/boot.nix
@@ -0,0 +1,6 @@
+{ config, lib, pkgs, ... }:
+
+{
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+}
diff --git a/nixos/.flake/system/core.nix b/nixos/.flake/system/core.nix
index 3747531..b15a520 100644
--- a/nixos/.flake/system/core.nix
+++ b/nixos/.flake/system/core.nix
@@ -5,136 +5,16 @@
{ config, lib, pkgs, ... }:
{
- imports =
- [ # Include the results of the hardware scan.
- ./hardware-configuration.nix
- ];
-
- nix.settings.experimental-features = [ "nix-command" "flakes" ];
- nixpkgs.config.allowUnfree = true;
-
- # Use the systemd-boot EFI boot loader.
- boot.loader.systemd-boot.enable = true;
- boot.loader.efi.canTouchEfiVariables = true;
-
- networking.hostName = "nixos"; # Define your hostname.
- networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
- hardware.bluetooth.enable = true;
- hardware.bluetooth.powerOnBoot = true;
- services.blueman.enable = true;
-
- security.pam.services.hyprlock = {};
-
- services.flatpak.enable = true;
- xdg.portal.enable = true;
-
- # Set your time zone.
- time.timeZone = "America/Winnipeg";
-
- # Select internationalisation properties.
- i18n.defaultLocale = "en_CA.UTF-8";
-
- # Enable the X11 windowing system.
- services.xserver.enable = true;
- services.greetd = {
- enable = true;
- settings = {
- default_session = {
- command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --remember --remember-session --sessions ${pkgs.hyprland}/share/wayland-sessions --cmd \"dbus-run-session Hyprland\"";
- user = "greeter";
- };
- };
- };
- systemd.services.greetd.serviceConfig = {
- Type = "idle";
- StandardInput = "tty";
- StanardOutput = "tty";
- StandardError = "journal";
- TTYReset = true;
- TTYVHangup = true;
- TTYVTDisallocate = true;
- };
-
- programs.hyprland.enable = true;
-
- # Configure keymap in X11
- services.xserver.xkb.layout = "us";
-
- # Enable CUPS to print documents.
- services.printing.enable = true;
-
- # Enable sound.
- services.pipewire = {
- enable = true;
- pulse.enable = true;
- };
-
- # Define a user account. Don't forget to set a password with ‘passwd’.
- users.users.jane = {
- shell = pkgs.zsh;
- isNormalUser = true;
- extraGroups = [ "networkmanager" "wheel" ]; # Enable ‘sudo’ for the user.
- packages = with pkgs; [
- firefox
- tree
- ];
- };
- programs.zsh.enable = true;
-
- # List packages installed in system profile. To search, run:
- environment.systemPackages = with pkgs; [
- greetd.tuigreet
- kitty
- dolphin
- git
- neovim
- wget
+ imports = [
+ ./boot.nix
+ ./desktop.nix
+ ./hardware-configuration.nix
+ ./locale.nix
+ ./network.nix
+ ./users.nix
];
- environment.variables.EDITOR = "vim";
- environment.pathsToLink = [ "/share/zsh" ];
- environment.sessionVariables.NIXOS_OZONE_WL = "1";
-
- # 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;
-
- # Copy the NixOS configuration file and link it from the resulting system
- # (/run/current-system/configuration.nix). This is useful in case you
- # accidentally delete configuration.nix.
- # system.copySystemConfiguration = true;
-
- # This option defines the first version of NixOS you have installed on this particular machine,
- # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
- #
- # Most users should NEVER change this value after the initial install, for any reason,
- # even if you've upgraded your system to a new NixOS release.
- #
- # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
- # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
- # to actually do that.
- #
- # This value being lower than the current NixOS release does NOT mean your system is
- # out of date, out of support, or vulnerable.
- #
- # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
- # and migrated your data accordingly.
- #
- # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
- system.stateVersion = "24.05"; # Did you read the comment?
+ nix.settings.experimental-features = [ "nix-command" "flakes" ];
+ system.stateVersion = "24.05";
}
diff --git a/nixos/.flake/system/desktop.nix b/nixos/.flake/system/desktop.nix
new file mode 100644
index 0000000..2e3fa2b
--- /dev/null
+++ b/nixos/.flake/system/desktop.nix
@@ -0,0 +1,54 @@
+{ config, lib, pkgs, ... }:
+
+{
+ nixpkgs.config.allowUnfree = true;
+ security.pam.services.hyprlock = {};
+ services.flatpak.enable = true;
+ xdg.portal.enable = true;
+ services.xserver.enable = true;
+ services.greetd = {
+ enable = true;
+ settings = {
+ default_session = {
+ command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --remember --remember-session --sessions ${pkgs.hyprland}/share/wayland-sessions --cmd \"dbus-run-session Hyprland\"";
+ user = "greeter";
+ };
+ };
+ };
+ systemd.services.greetd.serviceConfig = {
+ Type = "idle";
+ StandardInput = "tty";
+ StanardOutput = "tty";
+ StandardError = "journal";
+ TTYReset = true;
+ TTYVHangup = true;
+ TTYVTDisallocate = true;
+ };
+
+ programs.hyprland.enable = true;
+
+ services.xserver.xkb.layout = "us";
+
+ services.pipewire = {
+ enable = true;
+ pulse.enable = true;
+ };
+ environment.systemPackages = with pkgs; [
+ dolphin
+ firefox
+ git
+ greetd.tuigreet
+ kitty
+ neovim
+ wget
+ ];
+ environment.sessionVariables.NIXOS_OZONE_WL = "1";
+ programs.zsh.enable = true;
+ environment.variables.EDITOR = "vim";
+ environment.pathsToLink = [ "/share/zsh" ];
+
+ programs.gnupg.agent = {
+ enable = true;
+ enableSSHSupport = true;
+ };
+}
diff --git a/nixos/.flake/system/locale.nix b/nixos/.flake/system/locale.nix
new file mode 100644
index 0000000..320604a
--- /dev/null
+++ b/nixos/.flake/system/locale.nix
@@ -0,0 +1,6 @@
+{ config, lib, pkgs, ... }:
+
+{
+ time.timeZone = "America/Winnipeg";
+ i18n.defaultLocale = "en_CA.UTF-8";
+}
diff --git a/nixos/.flake/system/network.nix b/nixos/.flake/system/network.nix
new file mode 100644
index 0000000..56951de
--- /dev/null
+++ b/nixos/.flake/system/network.nix
@@ -0,0 +1,15 @@
+{ config, lib, pkgs, ... }:
+
+{
+ networking.hostName = "nixos";
+ networking.networkmanager.enable = true;
+ hardware.bluetooth.enable = true;
+ hardware.bluetooth.powerOnBoot = true;
+ services.blueman.enable = true;
+ services.printing.enable = true;
+ services.openssh.enable = true;
+ networking.firewall = {
+ allowedTCPPorts = [ ];
+ allowedUDPPorts = [ ];
+ };
+}
diff --git a/nixos/.flake/system/users.nix b/nixos/.flake/system/users.nix
new file mode 100644
index 0000000..59c9e21
--- /dev/null
+++ b/nixos/.flake/system/users.nix
@@ -0,0 +1,9 @@
+{ config, lib, pkgs, ... }:
+
+{
+ users.users.jane = {
+ shell = pkgs.zsh;
+ isNormalUser = true;
+ extraGroups = [ "networkmanager" "wheel" ];
+ };
+}