migrated packages from home manager to nix

This commit is contained in:
Danilo Reyes 2023-05-01 14:45:21 -06:00
parent 842011cce8
commit 06a03c8abe
2 changed files with 661 additions and 607 deletions

View File

@ -3,31 +3,39 @@ let
VERSION = "22.11"; VERSION = "22.11";
# HOME-MANAGER = builtins.fetchTarball # HOME-MANAGER = builtins.fetchTarball
# "https://github.com/nix-community/home-manager/archive/master.tar.gz"; # "https://github.com/nix-community/home-manager/archive/master.tar.gz";
UNSTABLE_TARBALL = UNSTABLE_TARBALL = builtins.fetchTarball
builtins.fetchTarball "https://github.com/nixos/nixpkgs/tarball/master"; https://github.com/nixos/nixpkgs/tarball/master;
unstable = import UNSTABLE_TARBALL { config = config.nixpkgs.config; }; unstable = import UNSTABLE_TARBALL {
in { # Remember to close this bracket at the end of the document config = config.nixpkgs.config;
imports = [ ./hardware-configuration.nix <home-manager/nixos> ];
networking.hostName = "workstation";
# networking.wireless.enable = true;
networking.networkmanager.enable = true;
time.timeZone = "America/Mexico_City";
i18n = {
defaultLocale = "en_CA.UTF-8";
extraLocaleSettings = { LC_MONETARY = "es_MX.UTF-8"; };
}; };
console = { in
{ # Remember to close this bracket at the end of the document
imports = [
./hardware-configuration.nix
<home-manager/nixos>
];
networking.hostName = "workstation";
# networking.wireless.enable = true;
networking.networkmanager.enable = true;
time.timeZone = "America/Mexico_City";
i18n = {
defaultLocale = "en_CA.UTF-8";
extraLocaleSettings = {
LC_MONETARY = "es_MX.UTF-8";
};
};
console = {
font = "Lat2-Terminus16"; font = "Lat2-Terminus16";
keyMap = "us"; keyMap = "us";
# useXkbConfig = true; # use xkbOptions in tty. # useXkbConfig = true; # use xkbOptions in tty.
}; };
services = { services = {
xserver = { xserver = {
enable = true; enable = true;
videoDrivers = [ "nvidia" ]; videoDrivers = [ "nvidia" ];
@ -36,15 +44,16 @@ in { # Remember to close this bracket at the end of the document
layout = "us"; layout = "us";
libinput.enable = true; # Wacom required? libinput.enable = true; # Wacom required?
}; };
}; };
environment.gnome.excludePackages = (with pkgs; [ environment.gnome.excludePackages = (with pkgs; [
gnome-photos gnome-photos
gnome-tour gnome-tour
gnome-text-editor gnome-text-editor
gnome-connections gnome-connections
baobab baobab
]) ++ (with pkgs.gnome; [ ])
++ (with pkgs.gnome; [
totem totem
gedit gedit
gnome-music gnome-music
@ -53,207 +62,184 @@ in { # Remember to close this bracket at the end of the document
yelp yelp
simple-scan simple-scan
gnome-font-viewer gnome-font-viewer
]); ]);
hardware.pulseaudio.enable = false; hardware.pulseaudio.enable = false;
sound.enable = false; sound.enable = false;
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {
enable = true; enable = true;
alsa.enable = true; alsa.enable = true;
alsa.support32Bit = true; alsa.support32Bit = true;
pulse.enable = true; pulse.enable = true;
}; };
security.sudo = { security.sudo = {
enable = true; enable = true;
wheelNeedsPassword = false; wheelNeedsPassword = false;
}; };
# security.sudo.enable = false; # security.sudo.enable = false;
# security.doas.enable = true; # security.doas.enable = true;
# security.doas.extraRules = [{ # security.doas.extraRules = [{
# users = [ "jawz" ]; # users = [ "jawz" ];
# keepEnv = true; # keepEnv = true;
# #persist = true; # #persist = true;
# noPass = true; # noPass = true;
# }]; # }];
users.users.jawz = { nixpkgs.config = {
allowUnfree = true;
};
users.users.jawz = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "docker" ]; extraGroups = [ "wheel" "networkmanager" "docker" ];
initialPassword = "password"; initialPassword = "password";
shell = pkgs.fish; shell = pkgs.fish;
packages = with pkgs; [ ]; packages = (with pkgs; [
};
nixpkgs.config = { allowUnfree = true; }; blender # cgi animation and sculpting
godot # game development
unstable.gdtoolkit # gdscript language server
krita # art to your heart desire!
drawpile # arty party with friends!!
mypaint # not the best art program
mypaint-brushes # but it's got some
mypaint-brushes1 # nice damn brushes
unstable.pureref # create inspiration/reference boards
unstable.gimp # the coolest bestest art program to never exist
fonts.fontconfig.enable = true; lutris # game/emulator manager
# grapejuice # roblox manager
minecraft # minecraft official launcher
parsec-bin # remote gaming with friends
unstable.protonup-qt # update proton-ge
home-manager.useUserPackages = true; libreoffice-fresh # office, but based
home-manager.useGlobalPkgs = true; calibre # ugly af eBook library manager
foliate # gtk eBook reader
gnome.simple-scan # document scanner
gnome-feeds # feed reader, maybe will replace with nextcloud
home-manager.users.jawz = { config, pkgs, ... }: { # sequeler # friendly SQL client
# imports = [ ./dotfiles/dconf.nix ]; blanket # background noise
home.stateVersion = VERSION; unstable.czkawka # duplicate finder
home.packages = (with pkgs; [ pika-backup # backups
# tilix # used to be my favourite terminal, but it's so outdated, that each time I use it less and less…
gnome-obfuscate # censor private information
metadata-cleaner # remove any metadata and geolocation from files
gnome-recipes # migrate these to mealie and delete
unstable.denaro # manage your finances
# unstable.celeste # sync tool for any cloud provider
# Art celluloid # video player
blender # cgi animation and sculpting cozy # audiobooks player
godot # game development gnome-podcasts # podcast player
unstable.gdtoolkit # gdscript language server handbrake # video converter, may be unnecessary
krita # art to your heart desire! curtail # image compressor
drawpile # arty party with friends!! pitivi # video editor
mypaint # not the best art program unstable.identity # compare images or videos
mypaint-brushes # but it's got some mousai # poor man shazam
mypaint-brushes1 # nice damn brushes tagger # tag music files
unstable.pureref # create inspiration/reference boards # bottles # wine prefix manager
unstable.gimp # the coolest bestest art program to never exist obs-studio # screen recorder & streamer
shortwave # listen to world radio
# Gaming discord # chat
lutris # game/emulator manager google-chrome # web browser with spyware included
grapejuice # roblox manager firefox # web browser that allows to disable spyware
minecraft # minecraft official launcher librewolf # no spyware web browser
parsec-bin # remote gaming with friends tor-browser-bundle-bin # dark web, so dark!
unstable.protonup-qt # update proton-ge # hugo # website engine
nicotine-plus # remember Ares?
warp # never used, but supposedly cool for sharing files
# Productivity yt-dlp # downloads videos from most video websites
libreoffice-fresh # office, but based unstable.gallery-dl # similar to yt-dlp but for most image gallery websites
calibre # ugly af eBook library manager gdu # disk-space utility, somewhat useful
foliate # gtk eBook reader gocryptfs # encrypted filesystem! shhh!!!
gnome.simple-scan # document scanner exa # like ls but with colors
gnome-feeds # feed reader, maybe will replace with nextcloud trash-cli # oop! didn't meant to delete that
tagger # tag music files ffmpeg_5 # coolest video converter!
neofetch # use once for brag, never again
rmlint # probably my favourite app, amazing dupe finder that integrates well with BTRFS
tldr # man for retards
ffmpegthumbnailer # create video thumbnails for nautilus, in absence of totem
vcsi # video thumbnails for torrents, can I replace it with ^?
mediainfo # technical info about videos, needed by some of my scripts
tree-sitter # code parsing, required by Doom emacs
xdg-ninja # help declutter $HOME
torrenttools # create torrent files from the terminal!
# Misc # required by doom emacs, but still are rather useful.
sequeler # friendly SQL client fd # modern find, faster searches
blanket # background noise fzf # fuzzy finder! super cool and useful
unstable.czkawka # duplicate finder ripgrep # modern grep
# pika-backup # backups languagetool # proofreader for English. check if works without the service
tilix # terminal graphviz # graphs
gnome-obfuscate # censor private information # these two are for doom everywhere
metadata-cleaner # remove any metadata and geolocation from files xorg.xwininfo
# gnome-recipes # migrate these to mealie and delete xdotool
unstable.denaro # manage your finances
unstable.celeste # sync tool for any cloud provider
# Multimedia # development environment
celluloid # video player nix-direnv # creates ephimeral environments
cozy # audiobooks player direnv # manages development environment
gnome-podcasts # podcast player exercism # learn to code
handbrake # video converter, may be unnecessary
curtail # image compressor
pitivi # video editor
unstable.identity # compare images or videos
mousai # poor man shazam
# bottles # wine prefix manager
obs-studio # screen recorder & streamer
shortwave # listen to world radio
# Web # SH
discord # chat bats # testing system, required by Exercism
google-chrome # web browser with spyware included bashdb # autocomplete
firefox # web browser that allows to disable spyware shellcheck # linting
librewolf # no spyware web browser shfmt # a shell parser and formatter
tor-browser-bundle-bin # dark web, so dark! nodePackages.bash-language-server # LSP support
# hugo # website engine file # required by my tasks script?
nicotine-plus # remember Ares? gnome.zenity # dependency of my scripts
warp # never used, but supposedly cool for sharing files xclip # manipulate clipboard from scripts
gdu # disk-space utility, somewhat useful # NIX
gocryptfs # encrypted filesystem! shhh!!! nixfmt # linting
exa # like ls but with colors
trash-cli # oop! didn't meant to delete that
ffmpeg_5 # coolest video converter!
yt-dlp # downloads videos from most video websites
unstable.gallery-dl # similar to yt-dlp but for most image gallery websites
neofetch # use once for brag, never again
rmlint # probably my favourite app, amazing dupe finder that integrates well with BTRFS
tldr # man for retards
ffmpegthumbnailer # create video thumbnails for nautilus, in absence of totem
vcsi # video thumbnails for torrents, can I replace it with ^?
mediainfo # technical info about videos, needed by some of my scripts
tree-sitter # code parsing, required by Doom emacs
xdg-ninja # help declutter $HOME
torrenttools # create torrent files from the terminal!
# required by doom emacs, but still are rather useful. # PYTHON.
fd # modern find, faster searches python3 # base language
fzf # fuzzy finder! super cool and useful pipenv # python development workflow for humans
ripgrep # modern grep
languagetool # proofreader for English. check if works without the service
graphviz # graphs
# doom everywhere
xorg.xwininfo
xdotool
# development environment # C# & Rust
nix-direnv # creates ephimeral environments omnisharp-roslyn # c# linter and code formatter
direnv # manages development environment
# editorconfig-checker # rules for contributing
exercism # learn to code
# SH # HASKELL
bats # testing system, required by Exercism # cabal-install # haskell interface
bashdb # autocomplete
shellcheck # linting
shfmt # a shell parser and formatter
nodePackages.bash-language-server # LSP support
file # required by my tasks script?
gnome.zenity # dependency of my scripts
xclip # manipulate clipboard from scripts
# NIX # JS
nixfmt # linting # jq # linting
nodejs # not as bad as I thought
# PYTHON. gnome.gnome-tweaks # tweaks for the gnome desktop environment
python3 # base language
pipenv # python development workflow for humans
# C# & Rust gnomeExtensions.appindicator
omnisharp-roslyn # c# linter and code formatter gnomeExtensions.gsconnect
# HASKELL hunspell
# cabal-install # haskell interface hunspellDicts.it_IT
hunspellDicts.es_MX
hunspellDicts.en_CA
# JS # Themes
# jq # linting adwaita-qt
nodejs # not as bad as I thought unstable.adw-gtk3
unstable.gradience # theme customizer, allows you to modify adw-gtk3 themes
gnome.gnome-tweaks # tweaks for the gnome desktop environment # Fonts
(nerdfonts.override {
fonts = [ "Agave" "CascadiaCode" "SourceCodePro" "Ubuntu" "FiraCode" "Iosevka" ];
})
symbola
gnomeExtensions.appindicator # (papirus-icon-theme.override {
gnomeExtensions.gsconnect # color = "grey";
# })
hunspell ]) ++ (with pkgs.python310Packages; [
hunspellDicts.it_IT
hunspellDicts.es_MX
hunspellDicts.en_CA
# Themes
adwaita-qt
unstable.adw-gtk3
unstable.gradience # theme customizer, allows you to modify adw-gtk3 themes
# Fonts
(nerdfonts.override {
fonts = [
"Agave"
"CascadiaCode"
"SourceCodePro"
"Ubuntu"
"FiraCode"
"Iosevka"
];
})
symbola
# (papirus-icon-theme.override {
# color = "grey";
# })
]) ++ (with pkgs.python310Packages; [
black # Python code formatter black # Python code formatter
flake8 # wraper for pyflakes, pycodestyle and mccabe flake8 # wraper for pyflakes, pycodestyle and mccabe
isort # sort Python imports isort # sort Python imports
@ -266,34 +252,41 @@ in { # Remember to close this bracket at the end of the document
speedtest-cli # check internet speed from the comand line speedtest-cli # check internet speed from the comand line
editorconfig # follow rules of contributin editorconfig # follow rules of contributin
]) ++ (with pkgs.fishPlugins; [ ]) ++ (with pkgs.fishPlugins; [
sponge # keep history clean from typos sponge # keep history clean from typos
fzf-fish # fish command line with fzf keybindings fzf-fish # fish command line with fzf keybindings
colored-man-pages # self explanatory colored-man-pages # self explanatory
autopair-fish # who has time for a closing bracket? autopair-fish # who has time for a closing bracket?
bass # integrate bash utilities on fish bass # integrate bash utilities on fish
]) ++ (with pkgs.nodePackages; [ ]) ++ (with pkgs.nodePackages; [
dockerfile-language-server-nodejs dockerfile-language-server-nodejs
markdownlint-cli markdownlint-cli
prettier prettier
pnpm pnpm
]); ]); }; # <--- end of package list
programs.starship.enable = true; fonts.fontconfig.enable = true;
programs.fish = {
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
home-manager.users.jawz = { config, pkgs, ... }:{
# imports = [ ./dotfiles/dconf.nix ];
home.stateVersion = VERSION;
home.packages = with pkgs; [ ];
programs.starship.enable = true;
programs.fish = {
enable = true; enable = true;
# useBabelfish = true; This setting doens't work from inside home-manager # useBabelfish = true; This setting doens't work from inside home-manager
shellAliases = { shellAliases = {
ls = ls = "exa --icons --group-directories-first --no-permissions --no-user --no-time";
"exa --icons --group-directories-first --no-permissions --no-user --no-time";
edit = "emacsclient -t"; edit = "emacsclient -t";
comic = "download -u jawz -i (cat $lc | fzf --multi --exact -i)"; comic = "download -u jawz -i (cat $lc | fzf --multi --exact -i)";
gallery = "download -u jawz -i (cat $lw | fzf --multi --exact -i)"; gallery = "download -u jawz -i (cat $lw | fzf --multi --exact -i)";
open_gallery = open_gallery = "open (find /mnt/disk2/scrapping/JawZ/gallery-dl -type d | fzf)";
"open (find /mnt/disk2/scrapping/JawZ/gallery-dl -type d | fzf)"; unique_extensions = "find . -type f | string match -r '([^.\/]+)\$' | sort -u";
unique_extensions =
"find . -type f | string match -r '([^./]+)$' | sort -u";
cp = "cp -i"; cp = "cp -i";
mv = "mv -i"; mv = "mv -i";
mkdir = "mkdir -p"; mkdir = "mkdir -p";
@ -315,31 +308,31 @@ in { # Remember to close this bracket at the end of the document
}; };
interactiveShellInit = '' interactiveShellInit = ''
set fish_greeting "pika pika chu!!!! also remember fisher!" set fish_greeting "pika pika chu!!!! also remember fisher!"
# Lists # Lists
set -l list_root ${config.home.homeDirectory}/.config/jawz/lists/jawz set -l list_root ${config.home.homeDirectory}/.config/jawz/lists/jawz
set lw $list_root/watch.txt set lw $list_root/watch.txt
set li $list_root/instant.txt set li $list_root/instant.txt
set lc $list_root/comic.txt set lc $list_root/comic.txt
set command_timeout = 30 set command_timeout = 30
set GPG_TTY (tty) set GPG_TTY (tty)
# Set EMACS/VI mode # Set EMACS/VI mode
function fish_user_key_bindings function fish_user_key_bindings
# fish_default_key_bindings # fish_default_key_bindings
fish_vi_key_bindings fish_vi_key_bindings
end end
''; '';
functions = { functions = {
nixos-magic = '' nixos-magic = ''
set -l nix_file "$HOME/Development/NixOS/configuration.nix" set -l nix_file "$HOME/Development/NixOS/configuration.nix"
echo $nix_file echo $nix_file
nixfmt $nix_file nixfmt $nix_file
sudo nixos-rebuild switch -I nixos-config=$nix_file sudo nixos-rebuild switch -I nixos-config=$nix_file
''; '';
mkcd = '' mkcd = ''
@ -349,16 +342,15 @@ in { # Remember to close this bracket at the end of the document
''; '';
}; };
}; };
programs = { programs = {
bat = { bat = {
enable = true; enable = true;
config = { config = {
# map-syntax = [ "*.jenkinsfile:Groovy" "*.props:Java Properties" ]; # map-syntax = [ "*.jenkinsfile:Groovy" "*.props:Java Properties" ];
pager = "less -FR"; pager = "less -FR";
theme = "base16"; theme = "base16"; };
};
}; };
git = { git = {
enable = true; enable = true;
@ -373,9 +365,9 @@ in { # Remember to close this bracket at the end of the document
enable = true; enable = true;
package = pkgs.htop-vim; package = pkgs.htop-vim;
}; };
}; };
xdg = { xdg = {
enable = true; enable = true;
userDirs = { userDirs = {
enable = true; enable = true;
@ -391,31 +383,30 @@ in { # Remember to close this bracket at the end of the document
}; };
configFile = { configFile = {
"wgetrc".source = ./dotfiles/wget/wgetrc; "wgetrc".source = ./dotfiles/wget/wgetrc;
"configstore/update-notifier-npm-check.json".source = "configstore/update-notifier-npm-check.json".source = ./dotfiles/npm/update-notifier-npm-check.json;
./dotfiles/npm/update-notifier-npm-check.json;
"npm/npmrc".source = ./dotfiles/npm/npmrc; "npm/npmrc".source = ./dotfiles/npm/npmrc;
"gallery-dl/config.json".source = ./dotfiles/gallery-dl/config.json; "gallery-dl/config.json".source = ./dotfiles/gallery-dl/config.json;
"htop/htoprc".source = ./dotfiles/htop/htoprc; "htop/htoprc".source = ./dotfiles/htop/htoprc;
}; };
}; };
services = { # services = {
emacs = { # emacs = {
enable = true; # enable = true;
defaultEditor = true; # defaultEditor = true;
package = pkgs.emacs; # package = pkgs.emacs;
}; # };
}; # };
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
wget wget
neovim neovim
docker-compose # easy way to migrate my docker anywhere! docker-compose # easy way to migrate my docker anywhere!
]; ];
environment.variables = rec { environment.variables = rec {
# PATH # PATH
XDG_CACHE_HOME = "\${HOME}/.cache"; XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config"; XDG_CONFIG_HOME = "\${HOME}/.config";
@ -461,15 +452,15 @@ in { # Remember to close this bracket at the end of the document
"\${PNPM_HOME}" "\${PNPM_HOME}"
"\${SCRIPTS}" "\${SCRIPTS}"
]; ];
}; };
virtualisation.docker = { virtualisation.docker = {
enable = true; enable = true;
storageDriver = "btrfs"; storageDriver = "btrfs";
enableNvidia = true; enableNvidia = true;
}; };
snapraid = { snapraid = {
enable = true; enable = true;
touchBeforeSync = true; touchBeforeSync = true;
sync.interval = "02:00"; sync.interval = "02:00";
@ -478,7 +469,9 @@ in { # Remember to close this bracket at the end of the document
olderThan = 10; olderThan = 10;
interval = "4:00"; interval = "4:00";
}; };
parityFiles = [ "/mnt/parity/snapraid.parity" ]; parityFiles = [
"/mnt/parity/snapraid.parity"
];
extraConfig = '' extraConfig = ''
autosave 50 autosave 50
''; '';
@ -497,36 +490,48 @@ in { # Remember to close this bracket at the end of the document
"/mnt/disk1/snapraid.content" "/mnt/disk1/snapraid.content"
"/mnt/disk2/snapraid.content" "/mnt/disk2/snapraid.content"
]; ];
}; };
programs = {
programs = {
mtr.enable = true; mtr.enable = true;
gnupg.agent = { gnupg.agent = {
enable = true; enable = true;
enableSSHSupport = true; enableSSHSupport = true;
}; };
geary = { enable = true; }; geary = {
enable = true;
};
steam = { steam = {
enable = true; enable = true;
remotePlay.openFirewall = true; remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true; dedicatedServer.openFirewall = true;
}; };
}; };
services = { services = {
printing.enable = true; printing.enable = true;
fstrim.enable = true; fstrim.enable = true;
btrfs.autoScrub = { btrfs.autoScrub = {
enable = true; enable = true;
fileSystems = [ "/" "/mnt/disk1" "/mnt/disk2" ]; fileSystems = [
"/"
"/mnt/disk1"
"/mnt/disk2"
];
}; };
openssh = { openssh = {
enable = true; enable = true;
ports = [ 25152 ]; ports = [ 25152 ];
}; };
udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];
emacs = {
enable = true;
defaultEditor = true;
package = pkgs.emacs;
}; };
};
systemd.services = { systemd.services = {
"docker-compose" = { "docker-compose" = {
enable = true; enable = true;
restartIfChanged = true; restartIfChanged = true;
@ -537,25 +542,26 @@ in { # Remember to close this bracket at the end of the document
environment = { environment = {
FILE = "/home/jawz/Development/Docker/docker-compose.yml"; FILE = "/home/jawz/Development/Docker/docker-compose.yml";
}; };
path = [ pkgs.docker-compose ]; path = [
pkgs.docker-compose
];
serviceConfig = { serviceConfig = {
Restart = "on-failure"; Restart = "on-failure";
# Type = "simple"; # Type = "simple";
RestartSec = 30; RestartSec = 30;
ExecStart = ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f \${FILE} up --remove-orphans";
"${pkgs.docker-compose}/bin/docker-compose -f \${FILE} up --remove-orphans";
ExecStop = "${pkgs.docker-compose}docker-compose -f \${FILE} down"; ExecStop = "${pkgs.docker-compose}docker-compose -f \${FILE} down";
}; };
}; };
}; };
# networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether. # Or disable the firewall altogether.
networking.firewall.enable = false; networking.firewall.enable = false;
system.copySystemConfiguration = true; system.copySystemConfiguration = true;
system.stateVersion = VERSION; system.stateVersion = VERSION;
} }

View File

@ -36,8 +36,8 @@
- [ ] appimages - [ ] appimages
- [-] Compile missing apps [1/8] - [-] Compile missing apps [1/8]
- [X] furtherance upgrade - [X] furtherance upgrade
- [ ] zap init - [-] zap init
- [ ] font-downloader - [-] font-downloader
- [ ] pokemon-colorscripts - [ ] pokemon-colorscripts
- [ ] SaveDesktop (flathub) - [ ] SaveDesktop (flathub)
- [ ] gelata - [ ] gelata
@ -70,7 +70,7 @@ in
{ # Remember to close this bracket at the end of the document { # Remember to close this bracket at the end of the document
#+end_src #+end_src
** IMPORTS * IMPORTS
These are files and modules which get loaded onto the configuration file, in the These are files and modules which get loaded onto the configuration file, in the
future I may segment this file into different modules, but for the time being, future I may segment this file into different modules, but for the time being,
the two ones I need are hardware and home-manager. the two ones I need are hardware and home-manager.
@ -82,7 +82,6 @@ imports = [
]; ];
#+end_src #+end_src
* SYSTEM CONFIGURATION * SYSTEM CONFIGURATION
** NETWORKING ** NETWORKING
At the moment, I don't have a wireless card on this computer, however as I build At the moment, I don't have a wireless card on this computer, however as I build
@ -213,24 +212,11 @@ such as patches or symlinks.
# }]; # }];
#+end_src #+end_src
* USER * USER PACKAGES
Being part of the "wheel" group, means that the user has root privileges. Being part of the "wheel" group, means that the user has root privileges.
#+begin_src nix This allows to install non-free packages, and also a toggle for installing
users.users.jawz = { packages from the unstable repository by prepending "unstable" to the package
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "docker" ];
initialPassword = "password";
shell = pkgs.fish;
packages = with pkgs; [
];
};
#+end_src
* MISC SETTINGS
** NIXPKGS settings
this allows to install unfree packages, and also a toggle for installing
packages from the unstable repository by preppending "unstable" to the package
name. name.
#+begin_src nix #+begin_src nix
@ -239,47 +225,36 @@ nixpkgs.config = {
}; };
#+end_src #+end_src
** ENABLE FONTCONFIG
If enabled, a Fontconfig configuration file will point to a set of default
fonts. If you don't care about running X11 applications or any other program
that uses Fontconfig, you can turn this option off and prevent a dependency on
all those fonts.
=tip= once that Wayland is ready for deployment, I probably can remove this
setting.
#+begin_src nix
fonts.fontconfig.enable = true;
#+end_src
* HOME-MANAGER
** HOME-MANAGER SETTINGS
These make it so packages install to '/etc' rather than the user home directory,
also allow for upgrades when rebuilding the system.
#+begin_src nix
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
#+end_src
** PACKAGES
This section of the document categorizes and organizes all he packages that I This section of the document categorizes and organizes all he packages that I
want installed, attempting to group them as dependencies of others when want installed, attempting to group them as dependencies of others when
necessary. necessary.
It has come to my attention, that using home-manager to manage packages, isn't a
recommended thing, while in theory there should be no errors with it, being a
downstream package there is no warranty that an upstream change will break
things with a new upgrade, breaking thus, the declarative nature of NixOs, for
that purpose, I have decided to keep home-manager as a module, with the
intention of reduce the number of dotfiles, however I will keep it exclusively
as a dotfile and service manager.
#+begin_src nix #+begin_src nix
home-manager.users.jawz = { config, pkgs, ... }:{ users.users.jawz = {
# imports = [ ./dotfiles/dconf.nix ]; isNormalUser = true;
home.stateVersion = VERSION; extraGroups = [ "wheel" "networkmanager" "docker" ];
home.packages = (with pkgs; [ initialPassword = "password";
shell = pkgs.fish;
packages = (with pkgs; [
#+end_src #+end_src
*** GUI PACKAGES :ATTACH: ** GUI PACKAGES
:PROPERTIES: All of my GUI applications categorized to make it easier to identify what each
:ID: d5a59b97-4c99-4813-9583-4bdbc978dbad application does, and the justification for is existence on my system.
:END:
*** ART AND DEVELOPMENT
Art and development applications are together, as a game-developer one of my
goals is to create a workflow between this ecosystem of applications.
#+begin_src nix #+begin_src nix
# Art
blender # cgi animation and sculpting blender # cgi animation and sculpting
godot # game development godot # game development
unstable.gdtoolkit # gdscript language server unstable.gdtoolkit # gdscript language server
@ -290,35 +265,55 @@ mypaint-brushes # but it's got some
mypaint-brushes1 # nice damn brushes mypaint-brushes1 # nice damn brushes
unstable.pureref # create inspiration/reference boards unstable.pureref # create inspiration/reference boards
unstable.gimp # the coolest bestest art program to never exist unstable.gimp # the coolest bestest art program to never exist
#+end_src
# Gaming *** GAMING
So far gaming has been a lot less painful than I could have originally
anticipated, most everything seems to run seamlessly.
=note= Roblox uninstalled as there is ongoing drama regarding linux users.
#+begin_src nix
lutris # game/emulator manager lutris # game/emulator manager
grapejuice # roblox manager # grapejuice # roblox manager
minecraft # minecraft official launcher minecraft # minecraft official launcher
parsec-bin # remote gaming with friends parsec-bin # remote gaming with friends
unstable.protonup-qt # update proton-ge unstable.protonup-qt # update proton-ge
#+end_src
# Productivity *** PRODUCTIVITY
This is the section where the apps that help me be productive come, a lot of
this are not used as often as I wish…
#+begin_src nix
libreoffice-fresh # office, but based libreoffice-fresh # office, but based
calibre # ugly af eBook library manager calibre # ugly af eBook library manager
foliate # gtk eBook reader foliate # gtk eBook reader
gnome.simple-scan # document scanner gnome.simple-scan # document scanner
gnome-feeds # feed reader, maybe will replace with nextcloud gnome-feeds # feed reader, maybe will replace with nextcloud
tagger # tag music files #+end_src
# Misc *** MISC
sequeler # friendly SQL client Most of these apps, are part of the gnome circle, and I decide to install them
if just for a try and play a little.
#+begin_src nix
# sequeler # friendly SQL client
blanket # background noise blanket # background noise
unstable.czkawka # duplicate finder unstable.czkawka # duplicate finder
# pika-backup # backups pika-backup # backups
tilix # terminal # tilix # used to be my favourite terminal, but it's so outdated, that each time I use it less and less…
gnome-obfuscate # censor private information gnome-obfuscate # censor private information
metadata-cleaner # remove any metadata and geolocation from files metadata-cleaner # remove any metadata and geolocation from files
# gnome-recipes # migrate these to mealie and delete gnome-recipes # migrate these to mealie and delete
unstable.denaro # manage your finances unstable.denaro # manage your finances
unstable.celeste # sync tool for any cloud provider # unstable.celeste # sync tool for any cloud provider
#+end_src
# Multimedia *** MULTIMEDIA
Overwhelmingly player applications, used for videos and music, while most of my
consumption has moved towards Danilo-flix, it's still worth the install of most
of these, for now.
#+begin_src nix
celluloid # video player celluloid # video player
cozy # audiobooks player cozy # audiobooks player
gnome-podcasts # podcast player gnome-podcasts # podcast player
@ -327,11 +322,16 @@ curtail # image compressor
pitivi # video editor pitivi # video editor
unstable.identity # compare images or videos unstable.identity # compare images or videos
mousai # poor man shazam mousai # poor man shazam
tagger # tag music files
# bottles # wine prefix manager # bottles # wine prefix manager
obs-studio # screen recorder & streamer obs-studio # screen recorder & streamer
shortwave # listen to world radio shortwave # listen to world radio
#+end_src
# Web *** Web
Stuff that I use to interact with the web, web browsers, chats, downloaders,
etc.
#+begin_src nix
discord # chat discord # chat
google-chrome # web browser with spyware included google-chrome # web browser with spyware included
firefox # web browser that allows to disable spyware firefox # web browser that allows to disable spyware
@ -342,16 +342,16 @@ nicotine-plus # remember Ares?
warp # never used, but supposedly cool for sharing files warp # never used, but supposedly cool for sharing files
#+end_src #+end_src
*** COMMAND-LINE PACKAGES ** COMMAND-LINE PACKAGES
#+begin_src nix #+begin_src nix
yt-dlp # downloads videos from most video websites
unstable.gallery-dl # similar to yt-dlp but for most image gallery websites
gdu # disk-space utility, somewhat useful gdu # disk-space utility, somewhat useful
gocryptfs # encrypted filesystem! shhh!!! gocryptfs # encrypted filesystem! shhh!!!
exa # like ls but with colors exa # like ls but with colors
trash-cli # oop! didn't meant to delete that trash-cli # oop! didn't meant to delete that
ffmpeg_5 # coolest video converter! ffmpeg_5 # coolest video converter!
yt-dlp # downloads videos from most video websites
unstable.gallery-dl # similar to yt-dlp but for most image gallery websites
neofetch # use once for brag, never again neofetch # use once for brag, never again
rmlint # probably my favourite app, amazing dupe finder that integrates well with BTRFS rmlint # probably my favourite app, amazing dupe finder that integrates well with BTRFS
tldr # man for retards tldr # man for retards
@ -363,7 +363,7 @@ xdg-ninja # help declutter $HOME
torrenttools # create torrent files from the terminal! torrenttools # create torrent files from the terminal!
#+end_src #+end_src
*** DEVELOPMENT PACKAGES ** DEVELOPMENT PACKAGES
#+begin_src nix #+begin_src nix
# required by doom emacs, but still are rather useful. # required by doom emacs, but still are rather useful.
@ -372,14 +372,13 @@ fzf # fuzzy finder! super cool and useful
ripgrep # modern grep ripgrep # modern grep
languagetool # proofreader for English. check if works without the service languagetool # proofreader for English. check if works without the service
graphviz # graphs graphviz # graphs
# doom everywhere # these two are for doom everywhere
xorg.xwininfo xorg.xwininfo
xdotool xdotool
# development environment # development environment
nix-direnv # creates ephimeral environments nix-direnv # creates ephimeral environments
direnv # manages development environment direnv # manages development environment
# editorconfig-checker # rules for contributing
exercism # learn to code exercism # learn to code
# SH # SH
@ -410,7 +409,7 @@ omnisharp-roslyn # c# linter and code formatter
nodejs # not as bad as I thought nodejs # not as bad as I thought
#+end_src #+end_src
*** GNOME EXTENSIONS ** GNOME EXTENSIONS
#+begin_src nix #+begin_src nix
gnome.gnome-tweaks # tweaks for the gnome desktop environment gnome.gnome-tweaks # tweaks for the gnome desktop environment
@ -419,7 +418,7 @@ gnomeExtensions.appindicator
gnomeExtensions.gsconnect gnomeExtensions.gsconnect
#+end_src #+end_src
*** HUNSPELL ** HUNSPELL
These dictionaries work with Firefox, Doom Emacs and LibreOffice. These dictionaries work with Firefox, Doom Emacs and LibreOffice.
#+begin_src nix #+begin_src nix
@ -429,8 +428,9 @@ hunspellDicts.es_MX
hunspellDicts.en_CA hunspellDicts.en_CA
#+end_src #+end_src
*** CUSTOMIZATION PACKAGES ** CUSTOMIZATION PACKAGES
Also, this finishes the packages array, put new modules above. Themes and other customization, making my DE look the way I want is one of the
main draws of Linux for me.
#+begin_src nix #+begin_src nix
# Themes # Themes
@ -477,7 +477,7 @@ symbola
bass # integrate bash utilities on fish bass # integrate bash utilities on fish
#+end_src #+end_src
** NPM ** NODE JS PACKAGES
#+begin_src nix #+begin_src nix
]) ++ (with pkgs.nodePackages; [ ]) ++ (with pkgs.nodePackages; [
@ -485,7 +485,39 @@ symbola
markdownlint-cli markdownlint-cli
prettier prettier
pnpm pnpm
]); ]); }; # <--- end of package list
#+end_src
* MISC SETTINGS
** ENABLE FONTCONFIG
If enabled, a Fontconfig configuration file will point to a set of default
fonts. If you don't care about running X11 applications or any other program
that uses Fontconfig, you can turn this option off and prevent a dependency on
all those fonts.
=tip= once that Wayland is ready for deployment, I probably can remove this
setting.
#+begin_src nix
fonts.fontconfig.enable = true;
#+end_src
* HOME-MANAGER
** HOME-MANAGER SETTINGS
These make it so packages install to '/etc' rather than the user home directory,
also allow for upgrades when rebuilding the system.
#+begin_src nix
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
#+end_src
** PACKAGES
#+begin_src nix
home-manager.users.jawz = { config, pkgs, ... }:{
# imports = [ ./dotfiles/dconf.nix ];
home.stateVersion = VERSION;
home.packages = with pkgs; [ ];
#+end_src #+end_src
** DOTFILES ** DOTFILES
@ -633,13 +665,13 @@ xdg = {
** USER-SERVICES ** USER-SERVICES
#+begin_src nix #+begin_src nix
services = { # services = {
emacs = { # emacs = {
enable = true; # enable = true;
defaultEditor = true; # defaultEditor = true;
package = pkgs.emacs; # package = pkgs.emacs;
}; # };
}; # };
#+end_src #+end_src
** CLOSING HOME-MANAGER ** CLOSING HOME-MANAGER
@ -724,8 +756,12 @@ virtualisation.docker = {
}; };
#+end_src #+end_src
* PROGRAMS & SERVICES * SNAPRAID
Some programs need SUID wrappers. It's a parity raid utility which creates a scheme similar to what UNRAID
offered, except not in real time, I schedule it to run every night, so it keeps
my files sync, while it is possible to use snapraid as a solution to keep a
historic backup of your files, I am more concerned with the whole disk recovery
in case of failure, as such a frequent sync fits my preferences.
#+begin_src nix #+begin_src nix
snapraid = { snapraid = {
@ -759,6 +795,13 @@ snapraid = {
"/mnt/disk2/snapraid.content" "/mnt/disk2/snapraid.content"
]; ];
}; };
#+end_src
* PROGRAMS & SERVICES
Some programs get enabled and installed through here, as well as the activation
of some services.
#+begin_src nix
programs = { programs = {
mtr.enable = true; mtr.enable = true;
gnupg.agent = { gnupg.agent = {
@ -791,6 +834,11 @@ services = {
ports = [ 25152 ]; ports = [ 25152 ];
}; };
udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];
emacs = {
enable = true;
defaultEditor = true;
package = pkgs.emacs;
};
}; };
#+end_src #+end_src