From 8e36dc50c7c387a69c7de2ab10e016733db275fa Mon Sep 17 00:00:00 2001 From: Julian Mutter Date: Sun, 24 Nov 2024 07:37:36 +0100 Subject: [PATCH] Separate hm suites into separate files --- homes/x86_64-linux/julian@aspi/default.nix | 7 +- homes/x86_64-linux/julian@kardorf/default.nix | 7 +- modules/home/suites/cli/default.nix | 79 +++++++ modules/home/suites/default/default.nix | 217 ------------------ modules/home/suites/desktop/default.nix | 97 ++++++++ modules/home/suites/development/default.nix | 100 ++++++++ 6 files changed, 288 insertions(+), 219 deletions(-) create mode 100644 modules/home/suites/cli/default.nix delete mode 100644 modules/home/suites/default/default.nix create mode 100644 modules/home/suites/desktop/default.nix create mode 100644 modules/home/suites/development/default.nix diff --git a/homes/x86_64-linux/julian@aspi/default.nix b/homes/x86_64-linux/julian@aspi/default.nix index a97bf1a..5043cc6 100644 --- a/homes/x86_64-linux/julian@aspi/default.nix +++ b/homes/x86_64-linux/julian@aspi/default.nix @@ -43,8 +43,13 @@ nix-helper.enable = true; desktop.enable = true; - suites.default.enable = true; fonts.enable = true; + + suites = { + cli.enable = true; + desktop.enable = true; + development.enable = true; + }; }; # Let Home Manager install and manage itself. diff --git a/homes/x86_64-linux/julian@kardorf/default.nix b/homes/x86_64-linux/julian@kardorf/default.nix index e202343..8ee8c3d 100644 --- a/homes/x86_64-linux/julian@kardorf/default.nix +++ b/homes/x86_64-linux/julian@kardorf/default.nix @@ -39,8 +39,13 @@ nix-helper.enable = true; desktop.enable = true; - suites.default.enable = true; fonts.enable = true; + + suites = { + cli.enable = true; + desktop.enable = true; + development.enable = true; + }; }; # Let Home Manager install and manage itself. diff --git a/modules/home/suites/cli/default.nix b/modules/home/suites/cli/default.nix new file mode 100644 index 0000000..41d8f0c --- /dev/null +++ b/modules/home/suites/cli/default.nix @@ -0,0 +1,79 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # An instance of `pkgs` with your overlays and packages applied is also available. + pkgs, + # You also have access to your flake's inputs. + inputs, + + # Additional metadata is provided by Snowfall Lib. + system, # The system architecture for this host (eg. `x86_64-linux`). + target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). + format, # A normalized name for the system target (eg. `iso`). + virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. + systems, # An attribute map of your defined hosts. + + # All other arguments come from the module system. + config, + host, + ... +}: + +let + cfg = config.modules.suites.cli; +in +{ + options.modules.suites.cli = { + enable = lib.mkOption { default = false; }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + bat + du-dust # Like du tree but better + fd # better find + fdupes # find and delete duplicate files + ffmpeg + findutils # locate + fzf # Fuzzy finder + ghostscript # needed for imagemagick with pdfs + imagemagick + git + gnupg + htop + jq # Command line JSON processor + killall + languagetool # Grammar checker + lazygit # Git client + links2 # Tui web-browser + lnav # log analyzing tool + mc # Tui file browser + # nix-index + nmap + p7zip # unzip 7zip archives + parted + pciutils # lspci + poppler_utils # Pdf utils including pdfimages + libqalculate # Nice tui calculator (qalc) + ripgrep # better grep + rnr # renaming tool + sage # Maths notebooks + tealdeer # tldr + topgrade # System update + tree + unetbootin # TODO + unixtools.procps # TODO + unzip + usbutils # lsusb + wget + wireguard-tools # wg-quick + xorg.xkill + zip + + ## My scripts + frajul.edit-config + frajul.lntocp + ]; + }; +} diff --git a/modules/home/suites/default/default.nix b/modules/home/suites/default/default.nix deleted file mode 100644 index 74e0c2e..0000000 --- a/modules/home/suites/default/default.nix +++ /dev/null @@ -1,217 +0,0 @@ -{ - # Snowfall Lib provides a customized `lib` instance with access to your flake's library - # as well as the libraries available from your flake's inputs. - lib, - # An instance of `pkgs` with your overlays and packages applied is also available. - pkgs, - # You also have access to your flake's inputs. - inputs, - - # Additional metadata is provided by Snowfall Lib. - system, # The system architecture for this host (eg. `x86_64-linux`). - target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). - format, # A normalized name for the system target (eg. `iso`). - virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. - systems, # An attribute map of your defined hosts. - - # All other arguments come from the module system. - config, - host, - ... -}: - -with lib; - -let - cfg = config.modules.suites.default; -in -{ - options.modules.suites.default = { - enable = mkOption { default = false; }; - }; - - config = mkIf cfg.enable { - # TODO: put this and relevant packages into desktop suite - services.blueman-applet.enable = true; - services.nextcloud-client.enable = true; - services.nextcloud-client.startInBackground = true; - services.network-manager-applet.enable = true; - - services.syncthing.tray.enable = true; - services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available - - programs.chromium = { - enable = true; - extensions = [ - # Tampermonkey - { id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; } - ]; - }; - - home.packages = with pkgs; [ - android-tools # adb - arandr - audacity - audible-cli - bat - calibre # ebook manager and viewer - cargo - clippy - cntr # nix debugger - conda - devcontainer # development container - dbeaver-bin - devbox # run docker-commands - digikam - discord - - drawio - du-dust # Like du tree but better - # dvdisaster - # element-desktop - # rocketchat-desktop - thunderbird - tdesktop # telegram - # schildichat-desktop # not updated regularly - nheko - evince # Simple pdf reader, good for focusing on document content - - fd # better find - fdupes # find and delete duplicate files - ffmpeg - findutils # locate - firefox - - fzf # Fuzzy finder - gcc - gcolor3 # Color picker - # geogebra - ghostscript # needed for imagemagick with pdfs - imagemagick - gimp - git - gnome.cheese - gnupg - gradle - handbrake - hexedit - htop - - (texlive.combine { - # for rendering latex in inkscape - inherit (texlive) - scheme-medium - standalone - amsmath - preview - ; - }) - # (pkgs.inkscape-with-extensions.override { - # inkscapeExtensions = [ pkgs.inkscape-extensions.textext ]; - # }) - # inkscape-with-extensions - # inkscape-extensions.textext - inkscape - - jdk - jq # Command line JSON processor - julia-bin - killall - kitty # Terminal - languagetool # Grammar checker - lazygit # Git client - libclang - libnotify - libreoffice - links2 # Tui web-browser - lnav # log analyzing tool - mate.engrampa - - matlab # Using nix-matlab overlay defined in flake - maven - mc # Tui file browser - # nix-index - nmap - nodejs - nomacs # Image viewer - okular # Pdf reader with many features, good for commenting documents - p7zip # unzip 7zip archives - parted - pavucontrol - pciutils # lspci - pdfsam-basic # Split, merge, etc for pdfs - pkg-config # Often needed to build something - - poppler_utils # Pdf utils including pdfimages - pwndbg # improved gdb (debugger) - python3 - - libqalculate # Nice tui calculator (qalc) - qalculate-gtk # Nice gui calculator - - qpdfview - # qutebrowser - # realvnc-vnc-viewer - ripgrep # better grep - rnr # renaming tool - rpi-imager # make isos - - # rustdesk - - rust-analyzer - rustc - rustfmt - - sage # Maths notebooks - scrcpy # Mirror android screen to pc - # shellcheck # Check bash scripts for common errors - sqlite - tealdeer # tldr - topgrade # System update - tor-browser - tree - unetbootin # TODO - unixtools.procps # TODO - unstable.path-of-building # Path of Building - unzip - usbutils # lsusb - vlc - watchexec # Run command when any file in current dir changes - wezterm # Terminal - wget - - wine - winetricks - - wireguard-tools # wg-quick - xclip # x11 clipboard access from terminal - xfce.mousepad # simple text editor - xorg.xkill - xournalpp # Edit pdf files - zip - zoom-us # Video conferencing - zotero # Manage papers and other sources - - ## My scripts - frajul.deploy-to-pianopi - frajul.edit-config - frajul.lntocp - frajul.open-messaging - frajul.xwacomcalibrate - - (pkgs.writeShellScriptBin "matlab-paper" '' - matlab -desktop -sd "/home/julian/dev/phdthesis/Phase B/mainSimulation" -softwareopengl - '') - (pkgs.writeShellScriptBin "matlab-robotik" '' - matlab -desktop -sd "/home/julian/nas-sync/Studium/Vorlesungen-Master/ss24/Robotik2" -softwareopengl - '') - (pkgs.writeShellScriptBin "matlab-gram" '' - export GTK_PATH=/usr/lib/gtk-3.0 - nix shell nixpkgs#gcc11 --command matlab -desktop -sd "/home/julian/dev/matlab-gram" -softwareopengl - '') - (pkgs.writeShellScriptBin "expenses-tracker" '' - java -jar /home/julian/dev/expensestracker/app/build/libs/app.jar - '') - ]; - }; -} diff --git a/modules/home/suites/desktop/default.nix b/modules/home/suites/desktop/default.nix new file mode 100644 index 0000000..fe2541d --- /dev/null +++ b/modules/home/suites/desktop/default.nix @@ -0,0 +1,97 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # An instance of `pkgs` with your overlays and packages applied is also available. + pkgs, + # You also have access to your flake's inputs. + inputs, + + # Additional metadata is provided by Snowfall Lib. + system, # The system architecture for this host (eg. `x86_64-linux`). + target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). + format, # A normalized name for the system target (eg. `iso`). + virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. + systems, # An attribute map of your defined hosts. + + # All other arguments come from the module system. + config, + host, + ... +}: + +let + cfg = config.modules.suites.desktop; +in +{ + options.modules.suites.desktop = { + enable = lib.mkOption { default = false; }; + }; + + config = lib.mkIf cfg.enable { + services.blueman-applet.enable = true; + services.nextcloud-client.enable = true; + services.nextcloud-client.startInBackground = true; + services.network-manager-applet.enable = true; + + services.syncthing.tray.enable = true; + services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available + + programs.chromium = { + enable = true; + extensions = [ + # Tampermonkey + { id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; } + ]; + }; + + home.packages = with pkgs; [ + arandr + calibre # ebook manager and viewer + digikam + discord + # dvdisaster + # element-desktop + # rocketchat-desktop + thunderbird + tdesktop # telegram + # schildichat-desktop # not updated regularly + nheko + evince # Simple pdf reader, good for focusing on document content + firefox + # geogebra + gnome.cheese + handbrake + kitty # Terminal + libnotify + libreoffice + mate.engrampa + nomacs # Image viewer + okular # Pdf reader with many features, good for commenting documents + pavucontrol + pdfsam-basic # Split, merge, etc for pdfs + qalculate-gtk # Nice gui calculator + qpdfview + # qutebrowser + # realvnc-vnc-viewer + rpi-imager # make isos + # rustdesk + tor-browser + unstable.path-of-building # Path of Building + # frajul.pob-dev-version # Path of Building + vlc + wezterm # Terminal + wine + winetricks + xclip # x11 clipboard access from terminal + xfce.mousepad # simple text editor + xournalpp # Edit pdf files + zoom-us # Video conferencing + zotero # Manage papers and other sources + + ## My scripts + frajul.open-messaging + frajul.xwacomcalibrate + ]; + }; +} diff --git a/modules/home/suites/development/default.nix b/modules/home/suites/development/default.nix new file mode 100644 index 0000000..302c936 --- /dev/null +++ b/modules/home/suites/development/default.nix @@ -0,0 +1,100 @@ +{ + # Snowfall Lib provides a customized `lib` instance with access to your flake's library + # as well as the libraries available from your flake's inputs. + lib, + # An instance of `pkgs` with your overlays and packages applied is also available. + pkgs, + # You also have access to your flake's inputs. + inputs, + + # Additional metadata is provided by Snowfall Lib. + system, # The system architecture for this host (eg. `x86_64-linux`). + target, # The Snowfall Lib target for this system (eg. `x86_64-iso`). + format, # A normalized name for the system target (eg. `iso`). + virtual, # A boolean to determine whether this system is a virtual target using nixos-generators. + systems, # An attribute map of your defined hosts. + + # All other arguments come from the module system. + config, + host, + ... +}: + +let + cfg = config.modules.suites.development; +in +{ + options.modules.suites.development = { + enable = lib.mkOption { default = false; }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + watchexec # Run command when any file in current dir changes + android-tools # adb + # shellcheck # Check bash scripts for common errors + sqlite + scrcpy # Mirror android screen to pc + cargo + clippy + cntr # nix debugger + conda + micromamba # a better, faster conda + devcontainer # development container + dbeaver-bin + devbox # dev environments using nix + distrobox # run commands inside docker containers + gcc + gradle + hexedit + unstable.zed-editor + jdk + julia-bin + (texlive.combine { + # for rendering latex in inkscape + inherit (texlive) + scheme-medium + standalone + amsmath + preview + ; + }) + matlab # Using nix-matlab overlay defined in flake + maven + nodejs + pkg-config # Often needed to build something + pwndbg # improved gdb (debugger) + python3 + rust-analyzer + rustc + rustfmt + # (pkgs.inkscape-with-extensions.override { + # inkscapeExtensions = [ pkgs.inkscape-extensions.textext ]; + # }) + # inkscape-with-extensions + # inkscape-extensions.textext + inkscape + gcolor3 # Color picker + gimp + drawio + audacity + + ## My scripts + frajul.deploy-to-pianopi + + (pkgs.writeShellScriptBin "matlab-paper" '' + matlab -desktop -sd "/home/julian/dev/phdthesis/Phase B/mainSimulation" -softwareopengl + '') + (pkgs.writeShellScriptBin "matlab-robotik" '' + matlab -desktop -sd "/home/julian/nas-sync/Studium/Vorlesungen-Master/ss24/Robotik2" -softwareopengl + '') + (pkgs.writeShellScriptBin "matlab-gram" '' + export GTK_PATH=/usr/lib/gtk-3.0 + nix shell nixpkgs#gcc11 --command matlab -desktop -sd "/home/julian/dev/matlab-gram" -softwareopengl + '') + (pkgs.writeShellScriptBin "expenses-tracker" '' + java -jar /home/julian/dev/expensestracker/app/build/libs/app.jar + '') + ]; + }; +}