NixOS configuration 🪄

♻️ refactored the home-directory (temp?)

Signed-off-by: Xaiya Schumin <d.schumin@proton.me>

+415 -542
+18
1
··· 1 + { lib, ... }: 2 + let 3 + inherit (builtins) 4 + fromTOML 5 + readFile 6 + in 7 + { 8 + programs.starship = { 9 + enable = true; 10 + 11 + settings = fromTOML ( 12 + readFile (fetchurl { 13 + url = "https://starship.rs/presets/toml/bracketed-segments.toml"; 14 + sha256 = "sha256-FQHzfWYEcllLCmH2nx52J31Jw8Yy6aDAoOVdxWxhcAU="; # TODO: make this auto update? (versioned) 15 + }) 16 + ); 17 + }; 18 + }
assets/wallpaper/thumbnail.png

This is a binary file and will not be displayed.

+1 -1
home/blmedia/default.nix
··· 13 13 jetbrains.phpstorm.enable = true; 14 14 }; 15 15 16 - cli = { 16 + tui = { 17 17 neovim = { 18 18 enable = true; 19 19 anonymous = true;
+1 -2
home/xaiya/default.nix
··· 8 8 programs = { 9 9 librewolf.enable = true; 10 10 discord.enable = true; 11 - lutris.enable = true; 12 11 13 12 jetbrains.webstorm.enable = true; 14 13 }; 15 14 16 - cli.neovim.enable = true; 15 + tui.neovim.enable = true; 17 16 }; 18 17 }
+3 -3
modules/home/cli/default.nix
··· 1 1 { 2 2 imports = [ 3 - ./zsh.nix # unix shell 4 3 ./ssh.nix # SSH configurations 5 - ./kitty.nix # rich terminal emulator 6 4 ./direnv.nix # better way to manage development environment 7 5 ./git.nix # version control 8 - ./neovim # vim editor configuration 6 + 7 + ./zsh.nix # unix shell 8 + ./starship.nix 9 9 ]; 10 10 }
+1 -2
modules/home/cli/direnv.nix
··· 13 13 }; 14 14 15 15 # Enable starship configuration for direnv 16 - programs.starship.settings.direnv.disabled = 17 - !config.programs.direnv.enable; 16 + programs.starship.settings.direnv.disabled = !config.programs.direnv.enable; 18 17 }; 19 18 }
modules/home/cli/kitty.nix modules/home/gui/kitty.nix
+2 -2
modules/home/cli/neovim/default.nix modules/home/tui/neovim/default.nix
··· 20 20 mkMerge 21 21 ; 22 22 23 - cfg = config.sylveon.cli.neovim; 23 + cfg = config.sylveon.tui.neovim; 24 24 neov-plugins = config.programs.nixvim.plugins; 25 25 in 26 26 { ··· 36 36 ]; 37 37 38 38 # Neovim should be used as a lightweigt editor (used for small changes) 39 - options.sylveon.cli.neovim = { 39 + options.sylveon.tui.neovim = { 40 40 enable = mkOpt bool false "vim editor, only better"; 41 41 anonymous = mkOpt bool false "If the file data should be anonymous to people (e.g discord rpc)"; 42 42 };
modules/home/cli/neovim/lsp.nix modules/home/tui/neovim/lsp.nix
modules/home/cli/neovim/sessions.nix modules/home/tui/neovim/sessions.nix
-57
modules/home/cli/neovim/social.nix
··· 1 - { lib, config, ... }: 2 - let 3 - inherit (lib) mkMerge mkIf; 4 - 5 - cfg = config.sylveon.cli.neovim; 6 - in 7 - { 8 - programs.nixvim.plugins = { 9 - cord = { 10 - enable = true; # TODO: disable for blmedia account 11 - 12 - settings = { 13 - display = { 14 - swap_fields = true; 15 - 16 - theme = "atom"; 17 - flavor = "accent"; 18 - }; 19 - 20 - timestamp.shared = true; 21 - 22 - editor = { 23 - tooltip = "NixOS managed VIM"; 24 - icon = "https://raw.githubusercontent.com/IogaMaster/neovim/main/.github/assets/nixvim-dark.webp"; 25 - }; 26 - 27 - text = (if cfg.anonymous then { 28 - file_browser = ''Browsing through ***''; 29 - workspace = ''In ***''; 30 - viewing = ''Viewing ***''; 31 - lsp = ''Configuring LSP''; 32 - docs = ''Reading ***''; 33 - vsc = ''Committing changes in ***''; 34 - notes = ''Taking notes in ***''; 35 - debug = ''Debugging in ***''; 36 - test = ''Testing in ***''; 37 - diagnostics = ''Fixing problems in ***''; 38 - games = ''Playing ***''; 39 - terminal = ''Running commands in ***''; 40 - 41 - editing.__raw = '' 42 - function(opts) 43 - return string.format('Editing %s file', opts.filetype) 44 - end 45 - ''; 46 - 47 - } else { 48 - file_browser.__raw = '' 49 - function(opts) 50 - return string.format('Browsing through %s', opts.workspace) 51 - end 52 - ''; 53 - }); 54 - }; 55 - }; 56 - }; 57 - }
modules/home/cli/neovim/telescope.nix modules/home/tui/neovim/telescope.nix
modules/home/cli/neovim/visual.nix modules/home/tui/neovim/visual.nix
+3 -7
modules/home/cli/ssh.nix
··· 2 2 { 3 3 programs.ssh = { 4 4 enable = true; 5 - enableDefaultConfig = false; # Option will be deprecated 5 + enableDefaultConfig = false; 6 6 7 - # Default Matchblocks that should be on every System 8 - # This might change over time if any other (not me) person joins this flake 9 7 matchBlocks = { 10 8 "*" = { 11 - addKeysToAgent = "no"; # These SSH Keys do not need to be managed through an agent 12 - 13 - serverAliveCountMax = 3; 9 + serverAliveCountMax = 3; 14 10 15 11 hashKnownHosts = true; 16 12 userKnownHostsFile = "~/.ssh/known_hosts"; ··· 25 21 identityFile = osConfig.age.secrets."ssh-gh".path; 26 22 }; 27 23 28 - "apricot" = { 24 + "apricot" = { # TODO: manage it into: knot.xaiya.dev 29 25 user = "git"; 30 26 hostname = "apricot"; 31 27 identityFile = osConfig.age.secrets."ssh-tangled".path;
+20
modules/home/cli/starship.nix
··· 1 + { lib, ... }: 2 + let 3 + inherit (builtins) 4 + fromTOML 5 + readFile 6 + fetchurl 7 + ; 8 + in 9 + { 10 + programs.starship = { 11 + enable = true; 12 + 13 + settings = fromTOML ( 14 + readFile (fetchurl { 15 + url = "https://starship.rs/presets/toml/bracketed-segments.toml"; 16 + sha256 = "sha256-FQHzfWYEcllLCmH2nx52J31Jw8Yy6aDAoOVdxWxhcAU="; # TODO: make this auto update? (versioned) 17 + }) 18 + ); 19 + }; 20 + }
-26
modules/home/cli/zsh.nix
··· 19 19 syntaxHighlighting.enable = true; 20 20 autosuggestion.enable = true; 21 21 22 - plugins = [ 23 - 24 - # Nix Shell support 25 - { 26 - name = "zsh-nix-shell"; 27 - file = "nix-shell.plugin.zsh"; 28 - 29 - src = pkgs.fetchFromGitHub { 30 - owner = "chisui"; 31 - repo = "zsh-nix-shell"; 32 - rev = "82ca15e638cc208e6d8368e34a1625ed75e08f90"; # v0.8.0 33 - sha256 = "1l99ayc9j9ns450blf4rs8511lygc2xvbhkg1xp791abcn8krn26"; 34 - }; 35 - } 36 - ]; 37 - }; 38 - 39 - programs.starship = { 40 - enable = true; 41 - 42 - settings = fromTOML ( 43 - readFile (fetchurl { 44 - url = "https://starship.rs/presets/toml/bracketed-segments.toml"; 45 - sha256 = "sha256-FQHzfWYEcllLCmH2nx52J31Jw8Yy6aDAoOVdxWxhcAU="; # TODO: make this auto update? (versioned) 46 - }) 47 - ); 48 22 }; 49 23 }
+4 -2
modules/home/default.nix
··· 1 1 { osConfig, ... }: 2 2 { 3 3 imports = [ 4 - ./desktop # Desktop specific configuration and theming 5 - ./programs 4 + ./gui 6 5 ./cli 6 + ./tui 7 + 8 + ./style.nix # Style configuration 7 9 ]; 8 10 9 11 config = {
-10
modules/home/desktop/default.nix
··· 1 - { 2 - imports = [ 3 - ./style.nix # Style configuration 4 - 5 - ./vicinae.nix # Application selector + manager 6 - 7 - ./sway # Window Manager 8 - ./kanshi # Screen manager 9 - ]; 10 - }
modules/home/desktop/kanshi/default.nix modules/home/gui/sway/kanshi/default.nix
modules/home/desktop/kanshi/docked_home.nix modules/home/gui/sway/kanshi/docked_home.nix
modules/home/desktop/kanshi/docked_office.nix modules/home/gui/sway/kanshi/docked_office.nix
modules/home/desktop/style.nix modules/home/style.nix
-53
modules/home/desktop/sway/config/applications.nix
··· 1 - { 2 - pkgs, 3 - config, 4 - lib, 5 - inputs', 6 - ... 7 - }: 8 - let 9 - inherit (lib) getExe; 10 - in 11 - { 12 - wayland.windowManager.sway.config = { 13 - window = { 14 - border = 3; 15 - titlebar = false; 16 - }; 17 - 18 - gaps = { 19 - inner = 8; 20 - outer = 3; 21 - }; 22 - 23 - floating = { 24 - # Windows that should be opened in floating mode 25 - criteria = [ 26 - # Configuration apps 27 - { class = "Enpass"; } 28 - { app_id = "com.yubico.yubioath"; } 29 - 30 - # Settings apps 31 - { app_id = ".blueman-manager-wrapped"; } 32 - { app_id = "org.pulseaudio.pavucontrol"; } 33 - ]; 34 - }; 35 - 36 - assigns = { 37 - # Assign social apps to workspace 4 38 - "4" = [ 39 - { class = "discord"; } 40 - { class = "teams-for-linux"; } 41 - ]; 42 - }; 43 - 44 - startup = [ 45 - # Display and configurations 46 - { command = (getExe pkgs.kanshi); always = true; } 47 - 48 - # Background Services 49 - { command = (getExe pkgs.sway-audio-idle-inhibit); } 50 - { command = "${getExe config.services.vicinae.package} server"; } 51 - ]; 52 - }; 53 - }
-7
modules/home/desktop/sway/config/default.nix
··· 1 - { 2 - imports = [ 3 - ./inputs.nix 4 - ./applications.nix 5 - ./workspaces.nix 6 - ]; 7 - }
-23
modules/home/desktop/sway/config/inputs.nix
··· 1 - { 2 - 3 - wayland.windowManager.sway.config = { 4 - input = { 5 - # All input devices 6 - "*" = { 7 - xkb_layout = "de"; 8 - 9 - accel_profile = "flat"; 10 - pointer_accel = "-0.7"; 11 - }; 12 - 13 - # Framework 16 touchpad 14 - "2362:628:PIXA3854:00_093A:0274_Touchpad" = { 15 - pointer_accel = "-0.2"; 16 - natural_scroll = "enabled"; 17 - # Disable while typing could annoy some people while gaming 18 - dwt = "enabled"; 19 - }; 20 - 21 - }; 22 - }; 23 - }
-49
modules/home/desktop/sway/config/workspaces.nix
··· 1 - { config, lib, self, ... }: 2 - let 3 - inherit (lib) 4 - forEach 5 - mkMerge 6 - mkIf 7 - ; 8 - 9 - inherit (builtins) 10 - elemAt 11 - toString 12 - ; 13 - in 14 - { 15 - wayland.windowManager.sway.config = { 16 - # Configure wallpaper 17 - output."*" = { 18 - bg = "${self}/assets/wallpaper/flamingo_bkg5.png fill"; 19 - }; 20 - defaultWorkspace = "1"; 21 - 22 - workspaceOutputAssign = mkMerge [ 23 - 24 - # Automated generated outputs with the help of kanshi 25 - # TODO: this *can* have double outputs, not imediatly bad but can hurt the config 26 - (mkIf config.services.kanshi.enable (forEach [1 2] (x: { 27 - output = 28 - forEach config.services.kanshi.settings (y: ( 29 - (elemAt y.profile.outputs (x - 1)).criteria) 30 - ); 31 - 32 - # Assign the 10 workspaces we have 33 - workspace = toString x; 34 - }))) 35 - 36 - [ 37 - { 38 - output = [ "eDP-2" ]; 39 - workspace = "3"; 40 - } 41 - 42 - { 43 - output = [ "eDP-2" ]; 44 - workspace = "4"; 45 - } 46 - ] 47 - ]; 48 - }; 49 - }
-100
modules/home/desktop/sway/default.nix
··· 1 - { 2 - osConfig, 3 - lib, 4 - pkgs, 5 - config, 6 - inputs', 7 - ... 8 - }: 9 - let 10 - inherit (lib) 11 - mkIf 12 - mkOptionDefault 13 - concatStringsSep 14 - getExe 15 - ; 16 - 17 - modifier = "Mod4"; 18 - sway = osConfig.sylveon.system.graphical.sway; 19 - cfg = config.wayland.windowManager.sway.config; 20 - in 21 - { 22 - imports = [ 23 - ./packages # Load extra packages 24 - ./config # Load sway configurations 25 - ]; 26 - 27 - config = mkIf sway.enable { 28 - wayland.windowManager.sway = { 29 - enable = true; 30 - 31 - # Package is set to null because it is already created in the original config 32 - package = null; 33 - 34 - systemd = { 35 - enable = true; 36 - xdgAutostart = true; 37 - }; 38 - 39 - config = { 40 - inherit modifier; 41 - terminal = "${getExe config.programs.kitty.package}"; 42 - 43 - colors = 44 - let 45 - submodule = { 46 - childBorder = "$base"; 47 - indicator = submodule.childBorder; 48 - 49 - # Configuration needed only if using the title bar 50 - text = "$text"; 51 - border = submodule.childBorder; 52 - background = "$base"; 53 - }; 54 - in 55 - { 56 - focused = submodule // rec { 57 - childBorder = "\$${config.catppuccin.accent}"; 58 - indicator = childBorder; 59 - border = childBorder; 60 - }; 61 - 62 - urgent = submodule // rec { 63 - childBorder = "$red"; 64 - indicator = childBorder; 65 - border = childBorder; 66 - }; 67 - 68 - placeholder = submodule; 69 - focusedInactive = submodule; 70 - unfocused = submodule; 71 - }; 72 - 73 - keybindings = mkOptionDefault { 74 - "${modifier}+Escape" = "exec ${getExe config.programs.swaylock.package}"; 75 - 76 - "${modifier}+shift+s" = 77 - ''exec ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp -d)" - | ${pkgs.wl-clipboard}/bin/wl-copy''; # Take a screenshot 78 - 79 - "${modifier}+e" = ''exec ${pkgs.nemo-with-extensions}/bin/nemo''; 80 - }; 81 - }; 82 - 83 - # SwayFx specific configuration 84 - extraConfig = concatStringsSep "\n" [ 85 - # Shadows 86 - "shadows enable" 87 - "shadows_on_csd enable" 88 - 89 - "shadow_color #7c7f93" 90 - "shadow_inactive_color #7c7f93" 91 - 92 - # "shadow_offset 5 5" 93 - "shadow_blur_radius 20" 94 - 95 - # Corners 96 - "corner_radius 13" 97 - ]; 98 - }; 99 - }; 100 - }
-9
modules/home/desktop/sway/packages/default.nix
··· 1 - { 2 - imports = [ 3 - ./waybar 4 - 5 - ./swaylock.nix 6 - ./swayidle.nix 7 - ./swaync.nix 8 - ]; 9 - }
-26
modules/home/desktop/sway/packages/swayidle.nix
··· 1 - { 2 - pkgs, 3 - osConfig, 4 - lib, 5 - config, 6 - ... 7 - }: 8 - let 9 - inherit (lib) mkIf; 10 - 11 - sway = osConfig.sylveon.system.graphical.sway; 12 - in 13 - { 14 - services.swayidle = mkIf sway.enable { 15 - enable = true; 16 - 17 - timeouts = [ 18 - { 19 - timeout = 300; 20 - command = "exec ${config.programs.swaylock.package}/bin/swaylock"; 21 - } 22 - ]; 23 - 24 - events."before-sleep" = "exec ${config.programs.swaylock.package}/bin/swaylock"; 25 - }; 26 - }
-34
modules/home/desktop/sway/packages/swaylock.nix
··· 1 - { 2 - pkgs, 3 - lib, 4 - osConfig, 5 - ... 6 - }: 7 - let 8 - inherit (lib) 9 - mkIf 10 - ; 11 - 12 - sway = osConfig.sylveon.system.graphical.sway; 13 - in 14 - 15 - { 16 - config = mkIf sway.enable { 17 - programs.swaylock = { 18 - enable = true; 19 - package = pkgs.swaylock-effects; 20 - 21 - settings = { 22 - effect-blur = "13x13"; 23 - effect-vignette = "0.4:0.4"; 24 - 25 - grace = 5; # Time until you can still exit the lock screen without a password 26 - grace-no-mouse = true; 27 - 28 - screenshots = true; 29 - 30 - clock = false; 31 - }; 32 - }; 33 - }; 34 - }
-19
modules/home/desktop/sway/packages/swaync.nix
··· 1 - { osConfig, lib, ... }: 2 - let 3 - inherit (lib) mkIf; 4 - 5 - sway = osConfig.sylveon.system.graphical.sway; 6 - in 7 - { 8 - 9 - services.swaync = mkIf sway.enable { 10 - enable = true; 11 - 12 - settings = { 13 - positionX = "right"; 14 - positionY = "top"; 15 - 16 - image-visibility = "never"; 17 - }; 18 - }; 19 - }
modules/home/desktop/sway/packages/waybar/default.nix modules/home/gui/sway/waybar/default.nix
modules/home/desktop/sway/packages/waybar/lix.svg modules/home/gui/sway/waybar/lix.svg
modules/home/desktop/sway/packages/waybar/modules/battery.nix modules/home/gui/sway/waybar/modules/battery.nix
modules/home/desktop/sway/packages/waybar/modules/clock.nix modules/home/gui/sway/waybar/modules/clock.nix
modules/home/desktop/sway/packages/waybar/modules/control_center.nix modules/home/gui/sway/waybar/modules/control_center.nix
modules/home/desktop/sway/packages/waybar/modules/default.nix modules/home/gui/sway/waybar/modules/default.nix
modules/home/desktop/sway/packages/waybar/modules/sway.nix modules/home/gui/sway/waybar/modules/sway.nix
modules/home/desktop/sway/packages/waybar/modules/tray.nix modules/home/gui/sway/waybar/modules/tray.nix
modules/home/desktop/sway/packages/waybar/style.css modules/home/gui/sway/waybar/style.css
-61
modules/home/desktop/vicinae.nix
··· 1 - { 2 - config, 3 - pkgs, 4 - inputs, 5 - inputs', 6 - osConfig, 7 - lib, 8 - ... 9 - }: 10 - let 11 - inherit (lib) 12 - mkIf 13 - getExe 14 - mkForce 15 - ; 16 - 17 - sway = osConfig.sylveon.system.graphical.sway; 18 - in 19 - { 20 - 21 - imports = [ 22 - inputs.vicinae.homeManagerModules.default 23 - ]; 24 - 25 - config = mkIf sway.enable { 26 - services.vicinae = { 27 - enable = true; 28 - package = pkgs.vicinae; # Outdated but more stable version built by hydra 29 - systemd.enable = false; # Is started through sway 30 - 31 - settings = { 32 - pop_to_root_on_close = true; 33 - font.size = 10; 34 - favicon_service = "twenty"; 35 - 36 - # Theme configuration with catppuccin currently bugged 37 - # https://github.com/catppuccin/nix/pull/800 38 - theme = 39 - let 40 - ctp = config.catppuccin; 41 - in 42 - { 43 - dark = { 44 - name = "catppuccin-${ctp.flavor}"; 45 - iconTheme = "Catppuccin ${lib.toSentenceCase ctp.flavor} ${lib.toSentenceCase ctp.accent}"; 46 - }; 47 - }; 48 - 49 - launcher_window = { 50 - csd = true; 51 - opacity = 0.95; 52 - rounding = 10; 53 - }; 54 - }; 55 - }; 56 - 57 - wayland.windowManager.sway.config.menu = 58 - "${getExe config.services.vicinae.package} toggle"; 59 - }; 60 - } 61 -
+12
modules/home/gui/default.nix
··· 1 + { 2 + imports = [ 3 + ./sway 4 + ./vicinae 5 + 6 + ./jetbrains 7 + 8 + ./librewolf.nix # web-browser 9 + ./discord.nix # social-chatting platform 10 + ./kitty.nix # gui-terminal 11 + ]; 12 + }
+244
modules/home/gui/sway/default.nix
··· 1 + { 2 + osConfig, 3 + lib, 4 + pkgs, 5 + config, 6 + inputs', 7 + self, 8 + ... 9 + }: 10 + let 11 + inherit (lib) 12 + mkIf 13 + mkOptionDefault 14 + concatStringsSep 15 + getExe 16 + mkMerge 17 + forEach 18 + elemAt 19 + ; 20 + 21 + modifier = "Mod4"; 22 + sway = osConfig.sylveon.system.graphical.sway; 23 + cfg = config.wayland.windowManager.sway.config; 24 + in 25 + { 26 + imports = [ 27 + ./waybar # Title bar TODO: replace with eww? 28 + ./kanshi # Window/Output manager 29 + ]; 30 + 31 + config = mkIf sway.enable { 32 + wayland.windowManager.sway = { 33 + enable = true; 34 + 35 + # Package is set to null because it is already created in the original config 36 + package = null; 37 + 38 + systemd = { 39 + enable = true; 40 + xdgAutostart = true; 41 + }; 42 + 43 + config = { 44 + inherit modifier; 45 + terminal = "${getExe config.programs.kitty.package}"; 46 + defaultWorkspace = "1"; 47 + 48 + menu = "${getExe config.services.vicinae.package} toggle"; 49 + 50 + output."*" = { 51 + bg = "${self}/assets/wallpaper/flamingo_bkg5.png fill"; 52 + }; 53 + 54 + colors = 55 + let 56 + submodule = { 57 + childBorder = "$base"; 58 + indicator = submodule.childBorder; 59 + 60 + # Configuration needed only if using the title bar 61 + text = "$text"; 62 + border = submodule.childBorder; 63 + background = "$base"; 64 + }; 65 + in 66 + { 67 + focused = submodule // rec { 68 + childBorder = "\$${config.catppuccin.accent}"; 69 + indicator = childBorder; 70 + border = childBorder; 71 + }; 72 + 73 + urgent = submodule // rec { 74 + childBorder = "$red"; 75 + indicator = childBorder; 76 + border = childBorder; 77 + }; 78 + 79 + placeholder = submodule; 80 + focusedInactive = submodule; 81 + unfocused = submodule; 82 + }; 83 + 84 + input = { 85 + "*" = { 86 + xkb_layout = "de"; 87 + 88 + accel_profile = "flat"; 89 + pointer_accel = "-0.7"; 90 + }; 91 + 92 + # Framework 16 touchpad 93 + "2362:628:PIXA3854:00_093A:0274_Touchpad" = { 94 + pointer_accel = "-0.2"; 95 + natural_scroll = "enabled"; 96 + # Disable while typing could annoy some people while gaming 97 + dwt = "enabled"; 98 + }; 99 + }; 100 + 101 + workspaceOutputAssign = mkMerge [ 102 + # Automaticly generated configuration based on kanshi 103 + (mkIf config.services.kanshi.enable ( 104 + forEach [ 1 2 ] (x: { 105 + output = forEach config.services.kanshi.settings (y: ((elemAt y.profile.outputs (x - 1)).criteria)); 106 + 107 + # Assign the 10 workspaces we have 108 + workspace = toString x; 109 + }) 110 + )) 111 + 112 + # default assigned workspaces 113 + [ 114 + { 115 + output = [ "eDP-2" ]; 116 + workspace = "3"; 117 + } 118 + 119 + { 120 + output = [ "eDP-2" ]; 121 + workspace = "4"; 122 + } 123 + ] 124 + ]; 125 + 126 + window = { 127 + border = 3; 128 + titlebar = false; 129 + }; 130 + 131 + gaps = { 132 + inner = 8; 133 + outer = 3; 134 + }; 135 + 136 + floating = { 137 + # Windows that should be opened in floating mode 138 + criteria = [ 139 + # Configuration apps 140 + { class = "Enpass"; } 141 + { app_id = "com.yubico.yubioath"; } 142 + 143 + # Settings apps 144 + { app_id = ".blueman-manager-wrapped"; } 145 + { app_id = "org.pulseaudio.pavucontrol"; } 146 + ]; 147 + }; 148 + 149 + assigns = { 150 + # Assign social apps to workspace 4 151 + "4" = [ 152 + { class = "discord"; } 153 + { class = "teams-for-linux"; } 154 + ]; 155 + }; 156 + 157 + startup = [ 158 + # Display and configurations 159 + { 160 + command = (getExe pkgs.kanshi); 161 + always = true; 162 + } 163 + 164 + # Background Services 165 + { command = (getExe pkgs.sway-audio-idle-inhibit); } 166 + { command = "${getExe config.services.vicinae.package} server"; } 167 + ]; 168 + 169 + keybindings = mkOptionDefault { 170 + "${modifier}+Escape" = "exec ${getExe config.programs.swaylock.package}"; 171 + 172 + "${modifier}+shift+s" = 173 + ''exec ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp -d)" - | ${pkgs.wl-clipboard}/bin/wl-copy''; # Take a screenshot 174 + 175 + "${modifier}+e" = "exec ${pkgs.nemo-with-extensions}/bin/nemo"; 176 + "${modifier}+o" = "exec ${getExe pkgs.obsidian}"; 177 + 178 + "${modifier}+shift+v" = 179 + "exec ${getExe config.services.vicinae.package} deeplink vicinae://extensions/vicinae/clipboard/history"; 180 + }; 181 + }; 182 + 183 + # SwayFx specific configuration 184 + extraConfig = concatStringsSep "\n" [ 185 + # Shadows 186 + "shadows enable" 187 + "shadows_on_csd enable" 188 + 189 + "shadow_color #7c7f93sway" 190 + "shadow_inactive_color #7c7f93" 191 + 192 + # "shadow_offset 5 5" 193 + "shadow_blur_radius 20" 194 + 195 + # Corners 196 + "corner_radius 13" 197 + ]; 198 + }; 199 + 200 + # Extra packages needed by sway 201 + programs.swaylock = { 202 + enable = true; 203 + package = pkgs.swaylock-effects; 204 + 205 + settings = { 206 + effect-blur = "13x13"; 207 + effect-vignette = "0.4:0.4"; 208 + 209 + grace = 5; # Time until you can still exit the lock screen without a password 210 + grace-no-mouse = true; 211 + 212 + screenshots = true; 213 + 214 + clock = false; 215 + }; 216 + }; 217 + 218 + services = { 219 + swaync = { 220 + enable = true; 221 + 222 + settings = { 223 + positionX = "right"; 224 + positionY = "top"; 225 + 226 + image-visibility = "never"; 227 + }; 228 + }; 229 + 230 + swayidle = { 231 + enable = true; 232 + 233 + timeouts = [ 234 + { 235 + timeout = 300; 236 + command = "exec ${config.programs.swaylock.package}/bin/swaylock"; 237 + } 238 + ]; 239 + 240 + events."before-sleep" = "exec ${config.programs.swaylock.package}/bin/swaylock"; 241 + }; 242 + }; 243 + }; 244 + }
+39
modules/home/gui/vicinae/default.nix
··· 1 + { 2 + config, 3 + pkgs, 4 + inputs, 5 + inputs', 6 + osConfig, 7 + lib, 8 + ... 9 + }: 10 + let 11 + inherit (lib) 12 + mkIf 13 + getExe 14 + mkForce 15 + ; 16 + 17 + sway = osConfig.sylveon.system.graphical.sway; 18 + in 19 + { 20 + 21 + imports = [ 22 + inputs.vicinae.homeManagerModules.default 23 + ]; 24 + 25 + config = mkIf sway.enable { 26 + services.vicinae = { 27 + enable = true; 28 + package = pkgs.vicinae; # Outdated but more stable version built by hydra 29 + systemd.enable = false; # Is started through sway 30 + 31 + settings = { 32 + launcher_window.opacity = 1; 33 + }; 34 + 35 + # TODO: add extensions 36 + }; 37 + }; 38 + } 39 +
-9
modules/home/programs/default.nix
··· 1 - { 2 - imports = [ 3 - ./librewolf.nix 4 - ./discord.nix 5 - ./lutris.nix 6 - 7 - ./jetbrains 8 - ]; 9 - }
modules/home/programs/discord.nix modules/home/gui/discord.nix
modules/home/programs/jetbrains/.ideavimrc modules/home/gui/jetbrains/.ideavimrc
modules/home/programs/jetbrains/.vimrc modules/home/gui/jetbrains/.vimrc
modules/home/programs/jetbrains/default.nix modules/home/gui/jetbrains/default.nix
modules/home/programs/librewolf.nix modules/home/gui/librewolf.nix
-40
modules/home/programs/lutris.nix
··· 1 - { 2 - config, 3 - lib, 4 - self, 5 - pkgs, 6 - inputs', 7 - osConfig, 8 - ... 9 - }: 10 - let 11 - 12 - inherit (lib) 13 - mkIf 14 - ; 15 - 16 - inherit (lib.types) bool; 17 - 18 - inherit (self.lib.modules) mkOpt; 19 - 20 - cfg = config.sylveon.programs.lutris; 21 - in 22 - { 23 - 24 - options.sylveon.programs.lutris = { 25 - enable = mkOpt bool false "Enable Game launcher"; 26 - }; 27 - 28 - config = mkIf cfg.enable { 29 - programs.lutris = { 30 - enable = true; 31 - 32 - # packages 33 - steamPackage = osConfig.programs.steam.package; 34 - 35 - # Wine packages build to long, find a solution TODO 36 - # Game runners TODO 37 - runners = { }; 38 - }; 39 - }; 40 - }
+5
modules/home/tui/default.nix
··· 1 + { 2 + imports = [ 3 + ./neovim # TODO: update to work as intended again 4 + ]; 5 + }
+62
modules/home/tui/neovim/social.nix
··· 1 + { lib, config, ... }: 2 + let 3 + inherit (lib) mkMerge mkIf; 4 + 5 + cfg = config.sylveon.tui.neovim; 6 + in 7 + { 8 + programs.nixvim.plugins = { 9 + cord = { 10 + enable = true; # TODO: disable for blmedia account 11 + 12 + settings = { 13 + display = { 14 + swap_fields = true; 15 + 16 + theme = "atom"; 17 + flavor = "accent"; 18 + }; 19 + 20 + timestamp.shared = true; 21 + 22 + editor = { 23 + tooltip = "NixOS managed VIM"; 24 + icon = "https://raw.githubusercontent.com/IogaMaster/neovim/main/.github/assets/nixvim-dark.webp"; 25 + }; 26 + 27 + text = ( 28 + if cfg.anonymous then 29 + { 30 + file_browser = "Browsing through ***"; 31 + workspace = "In ***"; 32 + viewing = "Viewing ***"; 33 + lsp = "Configuring LSP"; 34 + docs = "Reading ***"; 35 + vsc = "Committing changes in ***"; 36 + notes = "Taking notes in ***"; 37 + debug = "Debugging in ***"; 38 + test = "Testing in ***"; 39 + diagnostics = "Fixing problems in ***"; 40 + games = "Playing ***"; 41 + terminal = "Running commands in ***"; 42 + 43 + editing.__raw = '' 44 + function(opts) 45 + return string.format('Editing %s file', opts.filetype) 46 + end 47 + ''; 48 + 49 + } 50 + else 51 + { 52 + file_browser.__raw = '' 53 + function(opts) 54 + return string.format('Browsing through %s', opts.workspace) 55 + end 56 + ''; 57 + } 58 + ); 59 + }; 60 + }; 61 + }; 62 + }