diff --git a/.gitignore b/.gitignore index 81b47aa..31f728a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ ISSUES/ secrets/ -nib/ result rebuild*.log diff --git a/SCREENSHARING b/SCREENSHARING deleted file mode 100644 index d3046f6..0000000 --- a/SCREENSHARING +++ /dev/null @@ -1,11 +0,0 @@ -Excellent Resource -https://gist.github.com/brunoanc/2dea6ddf6974ba4e5d26c3139ffb7580#install-xdg-desktop-portal-and-friends - -Hyprland official page on screensharing -https://wiki.hyprland.org/Useful-Utilities/Screen-Sharing/ - - -Multiple sources seem to think that use xdg-desktop-portal-wlr works (but I can't stream individual applications) -but I suppose that's better than nothing? - -Also check out xwaylandvideobridge diff --git a/TODO.md b/TODO similarity index 98% rename from TODO.md rename to TODO index 6b9f235..bb8e65c 100644 --- a/TODO.md +++ b/TODO @@ -1,4 +1,5 @@ ## Next Up +0. Rename TODO -> TODO.md 1. Rename user "ae" to "cry" or "vps" 2. Add 404 page to nginx on hyrule 3. Add a user called "mirror" that stores important mirrors (inspiration: https://git.gay/mirror) diff --git a/banner b/banner deleted file mode 100644 index 67e1bd9..0000000 --- a/banner +++ /dev/null @@ -1,6 +0,0 @@ - .------------. - | oh my | - '------------' - ^ (\_(\ - '----- ( -.-) - o_(")(") diff --git a/config.temp/hyprland.conf b/config.temp/hyprland.conf index 4876e8a..864b184 100755 --- a/config.temp/hyprland.conf +++ b/config.temp/hyprland.conf @@ -25,9 +25,8 @@ monitor=eDP-1, highres@highrr, auto, 1.0 # Set programs that you use $terminal = ghostty #rio $fileManager = thunar -# $menu = wofi --show drun -# $menu = ags -t "applauncher" -$menu = fuzzel +#$menu = wofi --show drun +$menu = ags -t "applauncher" $colorpicker = hyprpicker | head -c 7 | wl-copy ################# @@ -41,7 +40,6 @@ $colorpicker = hyprpicker | head -c 7 | wl-copy # exec-once = nm-applet & # exec-once = waybar & hyprpaper & firefox exec-once = swww-daemon & -exec-once = mako & # TODO: or do I do `swww init` or `swww restore`? # █▀▀ █▄░█ █░█   █░█ ▄▀█ █▀█ diff --git a/flake.lock b/flake.lock index e1ab303..4785725 100644 --- a/flake.lock +++ b/flake.lock @@ -1,11 +1,30 @@ { "nodes": { + "ags": { + "inputs": { + "nixpkgs": "nixpkgs", + "systems": "systems" + }, + "locked": { + "lastModified": 1728326430, + "narHash": "sha256-tV1ABHuA1HItMdCTuNdA8fMB+qw7LpjvI945VwMSABI=", + "owner": "Aylur", + "repo": "ags", + "rev": "60180a184cfb32b61a1d871c058b31a3b9b0743d", + "type": "github" + }, + "original": { + "owner": "Aylur", + "repo": "ags", + "type": "github" + } + }, "colmena": { "inputs": { "flake-compat": "flake-compat", "flake-utils": "flake-utils", "nix-github-actions": "nix-github-actions", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "stable": "stable" }, "locked": { @@ -56,14 +75,14 @@ }, "grub2-themes": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1757136219, - "narHash": "sha256-tKU+vq34KHu/A2wD7WdgP5A4/RCmSD8hB0TyQAUlixA=", + "lastModified": 1730004881, + "narHash": "sha256-8xVIqIW25o2uCL0fxAmP4Sj9sdebarQXmd1+64yMe8o=", "owner": "vinceliuice", "repo": "grub2-themes", - "rev": "80dd04ddf3ba7b284a7b1a5df2b1e95ee2aad606", + "rev": "42c232dfb46bf93c17506cbc1a574e5e89b5e09f", "type": "github" }, "original": { @@ -94,6 +113,38 @@ } }, "nixpkgs": { + "locked": { + "lastModified": 1725634671, + "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1753939845, + "narHash": "sha256-K2ViRJfdVGE8tpJejs8Qpvvejks1+A4GQej/lBk5y7I=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "94def634a20494ee057c76998843c015909d6311", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { "lastModified": 1734119587, "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=", @@ -109,29 +160,13 @@ "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs_3": { "locked": { - "lastModified": 1761114652, - "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", + "lastModified": 1730808093, + "narHash": "sha256-oOenwoxpzQsBNi7KltgnXqq6e0+CxlfNXKn3k27w6cQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1761269590, - "narHash": "sha256-yTr+PCi4wGbOEidrm8XyXBobLxLMqIBsbUyhwsN6wrc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d792a6e0cd4ba35c90ea787b717d72410f56dc40", + "rev": "c1a390f74b2c93f69a6805142f11a215a689cec1", "type": "github" }, "original": { @@ -141,13 +176,13 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { - "lastModified": 1761016216, - "narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", + "lastModified": 1752620740, + "narHash": "sha256-f3pO+9lg66mV7IMmmIqG4PL3223TYMlnlw+pnpelbss=", "owner": "nixos", "repo": "nixpkgs", - "rev": "481cf557888e05d3128a76f14c76397b7d7cc869", + "rev": "32a4e87942101f1c9f9865e04dc3ddb175f5f32e", "type": "github" }, "original": { @@ -159,9 +194,10 @@ }, "root": { "inputs": { + "ags": "ags", "colmena": "colmena", "grub2-themes": "grub2-themes", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "nixpkgs-unstable": "nixpkgs-unstable" } }, @@ -180,6 +216,21 @@ "repo": "nixpkgs", "type": "github" } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index e339ce6..382bca6 100644 --- a/flake.nix +++ b/flake.nix @@ -5,9 +5,16 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; - colmena.url = "github:zhaofengli/colmena/?rev=47b6414d800c8471e98ca072bc0835345741a56a"; + #home-manager = { + # url = "github:nix-community/home-manager"; + # inputs.nixpkgs.follows = "nixpkgs"; + #}; grub2-themes.url = "github:vinceliuice/grub2-themes"; + + ags.url = "github:Aylur/ags"; + + colmena.url = "github:zhaofengli/colmena/?rev=47b6414d800c8471e98ca072bc0835345741a56a"; }; outputs = { diff --git a/homes/me/default.nix b/homes/me/default.nix index 6998e63..fac7454 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -6,33 +6,26 @@ pkgs, pkgs-unstable, ... -} @ args: { +}: { imports = [ - ../modules/fish.nix - ../modules/btop.nix - ../modules/tmux.nix - ../modules/term/foot.nix ../modules/git.nix ../modules/bat.nix - + ../modules/fish.nix ../modules/editor/helix.nix - (import ../modules/editor/vscode.nix args) + # ../modules/editor/vscodium.nix + ../modules/btop.nix + ../modules/term/ghostty.nix + ../modules/term/foot.nix + # ../modules/term/rio.nix ../modules/firefox.nix - ../modules/apps/thunderbird.nix #../modules/wm/hypr/hypridle.nix ../modules/wm/hypr/hyprlock.nix ../modules/kanshi.nix ../modules/ags - ../modules/mako.nix ]; - nixpkgs.config.allowUnfreePredicate = pkg: - builtins.elem (lib.GetName pkg) [ - "vscode-extension-ms-dotnettools-csharp" - ]; - home = { username = "me"; homeDirectory = "/home/me"; @@ -42,10 +35,6 @@ man = "batman"; # bat + man }; - sessionVariables = { - NIX_SHELL_PRESERVE_PROMPT = 1; - }; - pointerCursor = { gtk.enable = true; # x11.enable = true # dont enable since im on hyprland @@ -53,18 +42,6 @@ name = "Bibata-Modern-Ice"; size = 16; }; - - packages = with pkgs; [ - # for services.gnome-keyring - pkgs.gcr # provides org.gnome.keyring.SystemPrompter - seahorse # gui - - tor-browser - - fuzzel - - speedtest-cli - ]; }; gtk = { @@ -159,12 +136,8 @@ }; }; - services = { - # enable OpenSSH private key agent - ssh-agent.enable = true; - - gnome-keyring.enable = true; - }; + # enable OpenSSH private key agent + services.ssh-agent.enable = true; # the ssh-agent won't set this for itself... systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent"; # Nicely reload system units when changing configs diff --git a/homes/modules/apps/thunderbird.nix b/homes/modules/apps/thunderbird.nix deleted file mode 100644 index dd4f861..0000000 --- a/homes/modules/apps/thunderbird.nix +++ /dev/null @@ -1,10 +0,0 @@ -{...}: { - programs.thunderbird = { - enable = true; - profiles = { - "me" = { - isDefault = true; - }; - }; - }; -} diff --git a/homes/modules/editor/helix.nix b/homes/modules/editor/helix.nix index 8d6e22c..e7d6003 100755 --- a/homes/modules/editor/helix.nix +++ b/homes/modules/editor/helix.nix @@ -136,28 +136,6 @@ formatter.command = "${pkgs.clang-tools}/bin/clang-format"; language-servers = ["clangd"]; } - { - name = "haskell"; - auto-format = true; - formatter.command = "${pkgs.ormolu}/bin/ormolu"; - language-servers = ["haskell-language-server"]; - } - # { - # name = "c-sharp"; - # source = "source.cs"; - # file-types = ["cs"]; - # indent = { - # tab-width = 4; - # unit = " "; - # }; - # block-comment-tokens = { - # start = "/*"; - # end = "*/"; - # }; - # # auto-format = false; - # # formatter.command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; - # # language-servers = ["OmniSharp"]; - # } ]; language-server = { @@ -171,15 +149,6 @@ clangd = { command = "${pkgs.clang-tools}/bin/clangd"; }; - - haskell-language-server = { - command = "${pkgs.haskell-language-server}/bin/haskell-language-server-wrapper"; - }; - - # C# language services - OmniSharp = { - command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; - }; }; }; }; diff --git a/homes/modules/editor/vscode.nix b/homes/modules/editor/vscode.nix deleted file mode 100644 index f824b1c..0000000 --- a/homes/modules/editor/vscode.nix +++ /dev/null @@ -1,134 +0,0 @@ -{ - config, - lib, - pkgs, - vscodium ? false, - secret-service ? "gnome-libsecret", - vscode-argv ? ".vscode/argv.json", - ... -}: { - nixpkgs.overlays = [ - ( - self: super: { - vscode-extensions = super.vscode-extensions.overrideAttrs (prev: let - mkVscMarketplaceExtension = { - publisher, - name, - version, - hash, - description ? "", - homepage ? null, - changelog ? null, - license ? null, - maintainers ? [lib.maintainers.emileclarkb], - }: - with pkgs.vscode-utils.buildVscodeMarketplaceExtension; { - ${publisher}.${name} = buildVscodeMarketplaceExtension { - mktplcRef = { - inherit - publisher - name - version - hash - ; - }; - - meta = { - inherit - ( - if license != null - then {license = license;} - else {} - ) - description - homepage - maintainers - ; - downloadPage = "https://marketplace.visualstudio.com/items?itemName=${publisher}.${name}"; - changelog = - if changelog != null - then changelog - else "https://marketplace.visualstudio.com/items/${publisher}.${name}/changelog"; - }; - }; - }; - in - lib.mergeAttrsList [ - (mkVscMarketplaceExtension { - publisher = "ms-dotnettools"; - name = "dotnet-maui"; - version = "1.11.14"; - hash = lib.fakeHash; - - description = "Extend C# Dev Kit with tools for building .NET Multi-platform App UI (MAUI) apps"; - homepage = "https://github.com/microsoft/vscode-dotnettools"; - license = lib.licenses.unfree; - }) - ]); - } - ) - ]; - - # REF: https://home-manager-options.extranix.com/?query=vscode&release=release-25.05 - programs.vscode = { - enable = true; - # TODO: clean up - package = - ( - if vscodium - then pkgs.vscodium - else pkgs.vscode - ).overrideAttrs (oldAttrs: { - # runtimeDependencies = oldAttrs.runtimeDependencies ++ [] - }); - - mutableExtensionsDir = true; - - profiles.default = { - enableUpdateCheck = false; - enableExtensionUpdateCheck = false; - # extension format: USER.PACKAGENAME - extensions = with pkgs.vscode-extensions; [ - # .NET - ms-dotnettools.csharp - ms-dotnettools.csdevkit - ms-dotnettools.vscode-dotnet-runtime - # TODO: these extensions aren't packaged :( - # deitry.solution-syntax - # ms-dotnettools.vscode-dotnet-pack - # ms-dotnettools.dotnet-maui - - # Python - ms-python.python - - # GitLens by GitKraken - eamodio.gitlens - ms-azuretools.vscode-docker - - github.copilot - github.copilot-chat - - # Colors & Themes - dracula-theme.theme-dracula - catppuccin.catppuccin-vsc - catppuccin.catppuccin-vsc-icons - mvllow.rose-pine - ]; - - userSettings = { - "workbench.colorTheme" = "Dracula Theme"; - "github.copilot.nextEditSuggestions.enabled" = true; - }; - }; - }; - - # TODO: this is super ugly, make sure the JSON is formatted!! - home.file.${vscode-argv}.text = builtins.toJSON { - password-store = secret-service; - - disable-hardware-acceleration = false; - disable-color-correct-rendering = false; - enable-crash-reporter = false; - # crash-report-id = ...; - }; -} diff --git a/homes/modules/editor/vscodium.nix b/homes/modules/editor/vscodium.nix index ecde271..c5daf64 100644 --- a/homes/modules/editor/vscodium.nix +++ b/homes/modules/editor/vscodium.nix @@ -1,37 +1,9 @@ -{ - lib, - pkgs, - ... -}: { - # REF: https://home-manager-options.extranix.com/?query=vscode&release=release-25.05 +{pkgs, ...}: { programs.vscode = { enable = true; package = pkgs.vscodium; - mutableExtensionsDir = true; - - profiles.default = { - enableUpdateCheck = false; - enableExtensionUpdateCheck = false; - # extension format: USER.PACKAGENAME - extensions = with pkgs.vscode-extensions; [ - # .NET - ms-dotnettools.csharp - ms-dotnettools.csdevkit - ms-dotnettools.vscode-dotnet-runtime - # ms-dotnettools.vscode-dotnet-pack - # ms-dotnettools.dotnet-maui - - # Colors & Themes - dracula-theme.theme-dracula - catppuccin.catppuccin-vsc - catppuccin.catppuccin-vsc-icons - mvllow.rose-pine - ]; - - userSettings = { - "workbench.colorTheme" = "Dracula Theme"; - }; - }; + extensions = with pkgs.vscode-extensions; [ + ]; }; } diff --git a/homes/modules/fish.nix b/homes/modules/fish.nix index 801fa0f..51a40f4 100755 --- a/homes/modules/fish.nix +++ b/homes/modules/fish.nix @@ -12,14 +12,6 @@ config = { programs.fish = { enable = true; - generateCompletions = true; - - # vendor = { - # config.enable = true; - # functions.enable = true; - # completions.enable = true; - # }; - interactiveShellInit = '' # add dotnet completions if it exists (ie we're in a virtual environment) if type -q dotnet @@ -35,15 +27,6 @@ echo -n $greetings[(random 1 (count $greetings))] end - function gitignore -a type - curl -sL "https://www.gitignore.io/api/$type" - end - - # ripgrep on files - function rgf - rg --files | rg $args - end - set -g fish_greeting (rand_greet) diff --git a/homes/modules/git.nix b/homes/modules/git.nix index fdf6afb..3e0cfb0 100755 --- a/homes/modules/git.nix +++ b/homes/modules/git.nix @@ -5,19 +5,6 @@ }: { programs.git = { enable = true; - lfs.enable = true; - - userName = "Emile Clark-Boman"; - userEmail = "eclarkboman@gmail.com"; - - aliases = { - s = "status"; - d = "diff"; - l = "log"; - c = "commit"; - p = "push"; - }; - extraConfig = { color.ui = true; core.editor = "hx"; @@ -33,20 +20,10 @@ "github:" ]; }; - "https://gitlab.com/" = { - insteadOf = [ - "gl:" - "gitlab:" - ]; - }; }; }; - includes = [ - { - path = "/home/me/agribit/.gitconfig"; - condition = "gitdir:/home/me/agribit/**"; - } - ]; + userName = "Emile Clark-Boman"; + userEmail = "eclarkboman@gmail.com"; }; } diff --git a/homes/modules/mako.nix b/homes/modules/mako.nix deleted file mode 100644 index 762cd96..0000000 --- a/homes/modules/mako.nix +++ /dev/null @@ -1,54 +0,0 @@ -{...}: let - dracula = rec { - background = "#282A36"; - border = cyan; - - cyan = "#8BE9FD"; - yellow = "#F1FA8C"; - red = "#FF5555"; - }; - - theme = dracula; -in { - # notification daemon for Wayland - services.mako = { - enable = true; - settings = { - actions = true; - anchor = "top-right"; - layer = "overlay"; - sort = "-time"; - - height = 100; - width = 300; - margin = 50; - background-color = theme.background; - border-color = theme.border; - border-radius = 20; - border-size = 4; - font = "monospace 10"; - - markup = true; - icons = true; - max-icon-size = 64; - - default-timeout = 5000; - ignore-timeout = false; - - "actionable=true" = { - anchor = "top-left"; - }; - - "urgency=low" = { - border-color = theme.border; - }; - "urgency=normal" = { - border-color = theme.yellow; - }; - "urgency=high" = { - default-timeout = 0; - border-color = theme.red; - }; - }; - }; -} diff --git a/homes/modules/tmux.nix b/homes/modules/tmux.nix deleted file mode 100644 index e5946c0..0000000 --- a/homes/modules/tmux.nix +++ /dev/null @@ -1,5 +0,0 @@ -{...}: { - programs.tmux = { - enable = true; - }; -} diff --git a/homes/modules/wm/hypr/hyprland.nix b/homes/modules/wm/hypr/hyprland.nix index b9ca1f7..40a1d99 100755 --- a/homes/modules/wm/hypr/hyprland.nix +++ b/homes/modules/wm/hypr/hyprland.nix @@ -1,43 +1,2 @@ # NOTE: hyprland must be enabled in BOTH your host config (for running hyprland) # and your home-manager config (for managing hyprland's config files) -{ - pkgs, - pkgs-unstable, - inputs, - config, - lib, - ... -}: { - options.hyprland = { - enable = lib.mkEnableOption "Hyprland"; - }; - - config = lib.mkIf config.hyprland.enable { - wayland.windowManager.hyprland = { - enable = true; - package = pkgs.hyprland; # pkgs-unstable.hyprland; - - xwayland.enable = true; - - systemd = { - enable = true; - # enable autostart of applications - # REF: `man 8 systemd-xdg-autostart-generator` - enableXdgAutostart = true; - }; - - plugins = with inputs; [ - split-monitor-workspaces.packages.${pkgs.system}.split - ]; - }; - - xdg.portal = { - enable = true; - extraPortals = with pkgs; [ - xdg-desktop-portal-gtk - ]; - }; - - # TODO: finish this - }; -} diff --git a/hosts/hyrule/default.nix b/hosts/hyrule/default.nix index 325e467..6ac57a5 100755 --- a/hosts/hyrule/default.nix +++ b/hosts/hyrule/default.nix @@ -7,16 +7,15 @@ }: let home-manager = builtins.fetchTarball { url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz"; - sha256 = "0d41gr0c89a4y4lllzdgmbm54h9kn9fjnmavwpgw0w9xwqwnzpax"; + sha256 = "026rvynmzmpigax9f8gy9z67lsl6dhzv2p6s8wz4w06v3gjvspm1"; }; in { imports = [ ./hardware-configuration.nix (import "${home-manager}/nixos") - # ./mailserver.nix # TEMP: location - # ./minecraft-server.nix # TEMP: location - + ./mailserver.nix # TEMP: location + ./minecraft-server.nix # TEMP: location #../modules/server/nginx.nix #../modules/server/ssh.nix #../modules/server/fail2ban.nix diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index dbf965d..5ba7704 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -15,8 +15,6 @@ in { ./hardware-configuration.nix (import "${home-manager}/nixos") - ../modules/bashistrans.nix - ../modules/wm/hyprland.nix # ../modules/wm/river.nix ../modules/wm/crywl.nix @@ -35,31 +33,14 @@ in { ]; nixpkgs.config.allowUnfreePredicate = let - vscext = pkgs.vscode-extensions; - whitelist = with pkgs; - map lib.getName [ - discord - steam - steamcmd - steam-unwrapped - - winbox - - obsidian - gitkraken - - vscode - vscext.ms-dotnettools.csharp - vscext.ms-dotnettools.csdevkit - vscext.github.copilot - vscext.github.copilot-chat - - # XXX: DEBUG - # rider-override - # XXX: DEBUG - - # jetbrains.rider - ]; + whitelist = map lib.getName [ + pkgs.obsidian + pkgs.gitkraken + pkgs.steam + pkgs.steamcmd + pkgs.steam-unwrapped + pkgs.dwarf-fortress + ]; in pkg: builtins.elem (lib.getName pkg) whitelist; @@ -119,30 +100,10 @@ in { networkmanager.enable = true; firewall.enable = false; - - # Use CloudFlare's WARP+ 1.1.1.1 DNS service - nameservers = [ - "1.1.1.1#one.one.one.one" - "1.0.0.1#one.one.one.one" - ]; }; # ----- SERVICES ----- services = { - # systemd-resolved provides network name resolution - # to local processes via a D-Bus interface. - resolved = { - enable = true; - dnssec = "true"; - domains = ["~."]; - # Use CloudFlare's WARP+ 1.1.1.1 DNS service - fallbackDns = [ - "1.1.1.1#one.one.one.one" - "1.0.0.1#one.one.one.one" - ]; - dnsovertls = "true"; - }; - # Set display manager (login screen) displayManager = { # sddm relies on pkgs.libsForQt5.qt5.qtgraphicaleffects @@ -160,11 +121,11 @@ in { ); }; - # dbus = { - # # NOTE: programs.uwsm.enable sets implementation to dbus-broker, - # # NOTE: however this seems to break dbus - # implementation = lib.mkForce "dbus"; - # }; + dbus = { + # NOTE: programs.uwsm.enable sets implementation to dbus-broker, + # NOTE: however this seems to break dbus + implementation = lib.mkForce "dbus"; + }; # Multimedia Framework # With backwards compatability for alsa/pulseaudio/jack @@ -237,17 +198,12 @@ in { }; # ---- ENVIRONMENT VARIABLES ---- - environment = { - # always install "dev" derivation outputs - extraOutputsToInstall = ["dev" "man"]; + environment.sessionVariables = { + # folder names with capitalisation look awful! + XDG_DOWNLOAD_DIR = "$HOME/downloads"; - sessionVariables = { - # folder names with capitalisation look awful! - XDG_DOWNLOAD_DIR = "$HOME/downloads"; - - # Hint Electrons apps to use Wayland - NIXOS_OZONE_WL = "1"; - }; + # Hint Electrons apps to use Wayland + NIXOS_OZONE_WL = "1"; }; # ---- SYSTEM PACKAGES ----- @@ -273,49 +229,23 @@ in { fish shellcheck grc # colorise command outputs - moreutils # Systems Emulation qemu # Fellice Bellard's Quick Emulator # GNU Utils gnumake - # Binaries binutils - strace - ltrace - perf-tools # ftrace + perf - radare2 - gdb - hexyl - # ASM - nasm - (callPackage ../packages/x86-manpages {}) # C Family gcc clang - clang-tools # Rust cargo rustc - # Go - go # Nim nim - nimble - # Haskell - ghc - ghcid - haskell-language-server - ormolu - - # Nix - # TODO: once upgraded past Nix-24.07 this line won't be necessary (I think) - # helix will support nixd by default - # SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix - nixd # lsp for nix - nix-prefetch-git - nix-index + # Go + go # Python python312 # I use 3.12 since it's in a pretty stable state now @@ -324,11 +254,6 @@ in { # Sage sageWithDoc # SageMath + HTML Documentation - # .NET - dotnetCorePackages.dotnet_9.sdk - dotnetCorePackages.dotnet_9.aspnetcore - dotnetCorePackages.dotnet_9.runtime - openvpn inetutils @@ -345,18 +270,23 @@ in { zoxide doggo tldr - btop + # btop eza yazi lazygit ripgrep viddy # modern `watch` command thefuck - timg # terminal image (sixel) viewer + + # TODO: once upgraded past Nix-24.07 this line won't be necessary (I think) + # helix will support nixd by default + # SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix + nixd # lsp for nix # Pretty necessary git git-filter-repo + nix-prefetch-git brightnessctl acpi # upower @@ -368,10 +298,8 @@ in { file wget tree - pstree unzip unrar-free - lz4 man-pages man-pages-posix @@ -381,6 +309,8 @@ in { libargon2 # Games + mindustry + dwarf-fortress prismlauncher # minecraft ]; @@ -396,6 +326,22 @@ in { nix-ld.enable = true; + # I want to use fish as my login shell but it always goes terrible + # cause it isn't POSIX compliant, so instead Bash is my login and + # will just exec fish (^-^) + bash = { + blesh.enable = false; # ble.sh replacement for GNU readline + completion.enable = true; + + interactiveShellInit = '' + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; + }; + # Thunar also uses: `services.tumbler` & `services.gvfs` thunar = { enable = true; diff --git a/hosts/modules/apps/rider.nix b/hosts/modules/apps/rider.nix deleted file mode 100644 index adf8885..0000000 --- a/hosts/modules/apps/rider.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - pkgs, - pkgs-unstable, - ... -}: { - environment.systemPackages = with pkgs; [ - # Ensure latest stable Rider version (not necessarily stable on NixOS) - pkgs-unstable.jetbrains.rider - - # NOTE: Blazor requires a Chromium-based browser - chromium - # arc-browser - - # .NET - dotnetCorePackages.dotnet_9.sdk - dotnetCorePackages.dotnet_9.aspnetcore - dotnetCorePackages.dotnet_9.runtime - - # Mono - mono - # NOTE: nixpkgs-unstable uses .NET8 SDK - # WARNING: nixpkgs-25.05 uses .NET6 SDK (now marked insecure) - pkgs-unstable.msbuild - - # .NET Framework Tools/Services - omnisharp-roslyn - netcoredbg - ]; - - programs.nix-ld = { - enable = true; - libraries = with pkgs; [ - icu - ]; - }; -} diff --git a/hosts/modules/apps/winbox.nix b/hosts/modules/apps/winbox.nix deleted file mode 100644 index eaf8b7c..0000000 --- a/hosts/modules/apps/winbox.nix +++ /dev/null @@ -1,6 +0,0 @@ -{...}: { - programs.winbox = { - enable = true; - openFirewall = false; # port: 5678 - }; -} diff --git a/hosts/modules/bashistrans.nix b/hosts/modules/bashistrans.nix deleted file mode 100644 index d3b285c..0000000 --- a/hosts/modules/bashistrans.nix +++ /dev/null @@ -1,23 +0,0 @@ -{pkgs, ...}: { - # I want to use fish as my login shell but it always goes terrible - # cause it isn't POSIX compliant, so instead Bash is my login and - # will just exec fish (^-^) - programs.bash = { - blesh.enable = false; # ble.sh replacement for GNU readline - completion.enable = true; - - interactiveShellInit = '' - # help bash transition into a beautiful fish! - if [[ -z $CRY_BASH_IS_TRANS ]] - then - if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] - then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" - exec ${pkgs.fish}/bin/fish $LOGIN_OPTION - fi - fi - # bash is trans now! (no more transitioning required) - export CRY_BASH_IS_TRANS=true - ''; - }; -} diff --git a/hosts/modules/steam.nix b/hosts/modules/steam.nix index e554441..07f3ae1 100644 --- a/hosts/modules/steam.nix +++ b/hosts/modules/steam.nix @@ -3,38 +3,22 @@ lib, ... }: { - # nixpkgs.config.allowUnfreePredicate = pkg: - # builtins.elem (lib.getName pkg) [ - # "steam" - # "steam-original" - # "steam-unwrapped" - # "steam-run" - # ]; - nixpkgs.overlays = [ - (self: super: { - lutris = super.lutris.overrideAttrs (final: prev: { - # WARNING: pkgs.mbedtls_2 is marked insecure! - # Replace pkgs.mbedtls_2 (v2.28.10) with pkgs.mbedtls (v3.6.4) - targetPkgs = pkgs: ( - (builtins.filter (p: p != pkgs.mbedtls_2) (prev.targetPkgs pkgs)) - ++ [pkgs.mbedtls] - ); - }); - }) - ]; + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (lib.getName pkg) [ + "steam" + "steam-original" + "steam-unwrapped" + "steam-run" + ]; programs = { steam = { enable = true; - gamescopeSession.enable = false; # .desktop entry for gamescope + gamescopeSession.enable = true; remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; localNetworkGameTransfers.openFirewall = true; - - extraCompatPackages = with pkgs; [ - proton-ge-bin - ]; }; gamemode.enable = true; @@ -45,12 +29,7 @@ mangohud protonup-qt - - # XXX: DEBUG: disable lutris - # XXX: NOTE: pkgs.lutris depends on pkgs.mbedtls_2 which is marked insecure! - # XXX: NOTE: Use the provided overlay to patch pkgs.mbedtls_2 -> pkgs.mbedtls - # lutris - + lutris bottles heroic ]; diff --git a/hosts/modules/wm/hyprland.nix b/hosts/modules/wm/hyprland.nix index c83caa1..f2960ed 100644 --- a/hosts/modules/wm/hyprland.nix +++ b/hosts/modules/wm/hyprland.nix @@ -1,8 +1,4 @@ -{pkgs, ...}: { - environment.defaultPackages = with pkgs; [ - hyprsunset - ]; - +{...}: { programs = { hyprland = { enable = true; diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 6986a31..404a1c8 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -1,75 +1,42 @@ { lib, pkgs, - pkgs-unstable, inputs, config, ... }: let home-manager = builtins.fetchTarball { url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz"; - sha256 = "0q3lv288xlzxczh6lc5lcw0zj9qskvjw3pzsrgvdh8rl8ibyq75s"; + sha256 = "026rvynmzmpigax9f8gy9z67lsl6dhzv2p6s8wz4w06v3gjvspm1"; }; in { imports = [ ./hardware-configuration.nix (import "${home-manager}/nixos") - ../modules/bashistrans.nix - ../modules/wm/hyprland.nix ../modules/steam.nix - ../modules/obsidian.nix - ../modules/apps/rider.nix - ../modules/apps/winbox.nix - #../modules/flipperzero.nix - #../modules/chameleonultragui.nix + ../modules/flipperzero.nix + ../modules/chameleonultragui.nix ]; - nix.settings = { - experimental-features = [ - "nix-command" - "flakes" - ]; - download-buffer-size = 524288000; # 500 MiB - }; - # nixpkgs.overlays = [ - # (self: super: { - # jdk17 = super.jdk17.override (prev: { - # enableJavaFX = true; - # }); - # }) - # ]; + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; nixpkgs.config.allowUnfreePredicate = let - vscext = pkgs.vscode-extensions; - whitelist = with pkgs; - map lib.getName [ - discord - steam - steamcmd - steam-unwrapped - - winbox - - obsidian - gitkraken - - vscode - vscext.ms-dotnettools.csharp - vscext.ms-dotnettools.csdevkit - vscext.github.copilot - vscext.github.copilot-chat - - # XXX: DEBUG - # rider-override - # XXX: DEBUG - - # jetbrains.rider - ]; + whitelist = map lib.getName [ + pkgs.obsidian + pkgs.gitkraken + pkgs.steam + pkgs.steamcmd + pkgs.steam-unwrapped + pkgs.dwarf-fortress + ]; in pkg: builtins.elem (lib.getName pkg) whitelist; @@ -129,16 +96,7 @@ in { hostName = "myputer"; networkmanager.enable = true; - firewall = { - enable = true; - allowedTCPPorts = [ - 22 # SSH - 80 # HTTP - 443 # HTTPS - 5678 # MikroTik WinBox - 25565 # Minecraft LAN - ]; - }; + firewall.enable = true; }; # ----- SERVICES ----- @@ -225,24 +183,18 @@ in { home-manager = { users.me = import ../../homes/me; - extraSpecialArgs = {inherit inputs pkgs pkgs-unstable;}; sharedModules = [ inputs.ags.homeManagerModules.default ]; }; # ---- ENVIRONMENT VARIABLES ---- - environment = { - # always install "dev" derivation outputs - extraOutputsToInstall = ["dev" "man"]; + environment.sessionVariables = { + # folder names with capitalisation look awful! + XDG_DOWNLOAD_DIR = "$HOME/downloads"; - sessionVariables = { - # folder names with capitalisation look awful! - XDG_DOWNLOAD_DIR = "$HOME/downloads"; - - # Hint Electrons apps to use Wayland - NIXOS_OZONE_WL = "1"; - }; + # Hint Electrons apps to use Wayland + NIXOS_OZONE_WL = "1"; }; # ---- SYSTEM PACKAGES ----- @@ -256,16 +208,8 @@ in { bluetui wl-clipboard # clipboard for wayland hyprpicker - hyprshot # screenshot utility qbittorrent signal-desktop - kdePackages.gwenview # image viewer - libreoffice - - # TEST: WARNING - # ospd-openvas - # openvas-scanner - # openvas-smb (callPackage ../sddm-theme-corners.nix {}).sddm-theme-corners # dependencies for my sddm theme: @@ -276,52 +220,23 @@ in { fish shellcheck grc # colorise command outputs - moreutils - # Systems Programming & Compilation + # Systems Emulation qemu # Fellice Bellard's Quick Emulator # GNU Utils gnumake - # Binaries binutils - strace - ltrace - perf-tools # ftrace + perf - radare2 - gdb - # ASM - nasm - (callPackage ../packages/x86-manpages {}) # C Family gcc clang clang-tools - # Rust cargo rustc - # Go - go # Nim nim - nimble - # Haskell - ghc - ghcid - haskell-language-server - ormolu - - # Java - # jdk17 - # (jre8.overrideAttrs - # (oldAttrs: { - # enableJavaFX = true; - # })) - # (jdk8.overrideAttrs - # (oldAttrs: { - # enableJavaFX = true; - # })) - visualvm + # Go + go # Python python312 # I use 3.12 since it's in a pretty stable state now @@ -375,10 +290,8 @@ in { file wget tree - pstree unzip unrar-free - lz4 man-pages man-pages-posix @@ -427,6 +340,21 @@ in { }; }; + # I want to use fish as my login shell but it always goes terrible + # cause it isn't POSIX compliant, so instead Bash is my login and + # will just exec fish (^-^) + bash = { + completion.enable = true; + + interactiveShellInit = '' + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + ''; + }; + # Thunar also (optionally) requires: `services.tumbler` & `services.gvfs` thunar = { enable = true; @@ -439,18 +367,6 @@ in { # mozilla's email client thunderbird.enable = true; - - java = let - # XXX: WARNING: TEST :WARNING: XXX - # Test for CrazyCraft VoidLauncher - myjdk = pkgs.jdk17.override { - enableJavaFX = true; - # openjfx_jdk = pkgs.openjfx17.override {withWebKit = true;}; - }; - in { - enable = true; - package = myjdk; - }; }; # ----- FONTS ----- diff --git a/hosts/packages/huggingface_hub/flake.nix b/hosts/packages/huggingface_hub/flake.nix deleted file mode 100644 index 37814d9..0000000 --- a/hosts/packages/huggingface_hub/flake.nix +++ /dev/null @@ -1,35 +0,0 @@ -# Template: https://nixos-and-flakes.thiscute.world/development/intro -{ - description = "Humanity's Last Exam - Devshell"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; - }; - - outputs = {nixpkgs, ...}: let - system = "x86_64-linux"; - pkgs = import nixpkgs { - inherit system; - }; - python = pkgs.python312.override { - self = python; - packageOverrides = pyfinal: pyprev: { - huggingface-hub = pyfinal.callPackage ./huggingface_hub.nix {}; - hf-xet = pyfinal.callPackage ./hf-xet.nix {}; - }; - }; - in { - devShells."${system}".default = pkgs.mkShell { - packages = [ - (python.withPackages (pypkgs: [ - pypkgs.huggingface-hub - ])) - ]; - - shell = "${pkgs.bash}/bin/bash"; - shellHook = '' - alias hf=huggingface-cli - ''; - }; - }; -} diff --git a/hosts/packages/huggingface_hub/hf-xet.nix b/hosts/packages/huggingface_hub/hf-xet.nix deleted file mode 100644 index 0f4c631..0000000 --- a/hosts/packages/huggingface_hub/hf-xet.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchFromGitHub, - pkg-config, - rustPlatform, - openssl, -}: -buildPythonPackage rec { - pname = "hf-xet"; - version = "1.1.5"; - pyproject = true; - - src = fetchFromGitHub { - owner = "huggingface"; - repo = "xet-core"; - tag = "v${version}"; - hash = "sha256-udjZcXTH+Mc4Gvj6bSPv1xi4MyXrLeCYav+7CzKWyhY="; - }; - - sourceRoot = "${src.name}/hf_xet"; - - cargoDeps = rustPlatform.fetchCargoVendor { - inherit - pname - version - src - sourceRoot - ; - hash = "sha256-PTzYubJHFvhq6T3314R4aqBAJlwehOqF7SbpLu4Jo6E="; - }; - - nativeBuildInputs = [ - pkg-config - rustPlatform.cargoSetupHook - rustPlatform.maturinBuildHook - ]; - - buildInputs = [ - openssl - ]; - - env.OPENSSL_NO_VENDOR = 1; - - pythonImportsCheck = ["hf_xet"]; - - # No tests (yet?) - doCheck = false; - - meta = { - description = "Xet client tech, used in huggingface_hub"; - homepage = "https://github.com/huggingface/xet-core/tree/main/hf_xet"; - changelog = "https://github.com/huggingface/xet-core/releases/tag/v${version}"; - license = lib.licenses.asl20; - }; -} diff --git a/hosts/packages/huggingface_hub/huggingface_hub.nix b/hosts/packages/huggingface_hub/huggingface_hub.nix deleted file mode 100644 index 02b03b7..0000000 --- a/hosts/packages/huggingface_hub/huggingface_hub.nix +++ /dev/null @@ -1,62 +0,0 @@ -/* -* WARNING: Just use `pkgs.python312Packages.huggingface-hub` (or change python version) -* WARNING: I didn't realise it existed when I packaged this. -* -* Nix Resources: -* 1. https://wiki.nixos.org/wiki/Python -* 2. https://nixos.org/manual/nixpkgs/unstable/#developing-with-python -* -* Hugging Face Resources: -* 1. https://github.com/huggingface/huggingface_hub -* 2. https://huggingface.co/docs/huggingface_hub/main/en/guides/cli -*/ -{ - lib, - buildPythonPackage, - fetchPypi, - # build time dependencies - setuptools, - # runtime dependencies - filelock, - fsspec, - hf-xet, - pyyaml, - requests, - tqdm, - typing-extensions, -}: -buildPythonPackage rec { - pname = "huggingface_hub"; - version = "0.34.3"; - - src = fetchPypi { - inherit pname version; - hash = "sha256-1YEw/VqnQISAaBR1SRwKvX6DVEIIL7w+9NRbbDn4OFM="; - }; - - pyproject = true; - doCheck = false; # skip unit testing - pythonImportsCheck = ["huggingface_hub"]; - - # buildtime dependencies - build-system = [ - setuptools - ]; - # runtime dependencies - dependencies = [ - filelock - fsspec - hf-xet - pyyaml - requests - tqdm - typing-extensions - ]; - - meta = rec { - description = "The official Python client for the Huggingface Hub."; - homepage = "https://github.com/huggingface/huggingface_hub"; - changelog = "${homepage}/releases/tag/v${version}"; - license = lib.licenses.asl20; # Apache License 2.0 - }; -} diff --git a/hosts/packages/x86-manpages/default.nix b/hosts/packages/x86-manpages/default.nix deleted file mode 100644 index b687422..0000000 --- a/hosts/packages/x86-manpages/default.nix +++ /dev/null @@ -1,32 +0,0 @@ -{pkgs, ...}: -pkgs.stdenv.mkDerivation { - pname = "x86-manpages"; - version = "0.0.1"; - - src = pkgs.fetchFromGitHub { - owner = "ttmo-O"; - repo = "x86-manpages"; - - ## Recommended - # rev = "0e199a8b4d90be7eb715291c21cf41de8527beac"; - # sha256 = "0im596j0pf90npg933gkq6wpw23c47fcwv0n64qfqn5mcy92qbcb"; - rev = "94902f9c45de0efe803c32b6c3e88d6623881866"; - sha256 = "0k6nsfabzqwnhjiyw2kyg0z49nzrsxn515f6dcjh1rn7bzih5562"; - }; - - installPhase = '' - mkdir -p $out/man/man7 - - shopt -u nullglob - for m in man7/*.7; do - install -m 644 "$m" "$out/man/man7" - done - ''; - - meta = with pkgs.lib; { - description = "Manpages for x86 instructions"; - homepage = "https://github.com/ttmo-O/x86-manpages"; - license = licenses.mit; - platforms = platforms.all; - }; -} diff --git a/scripts/box b/scripts/box deleted file mode 100755 index 7f69cb0..0000000 --- a/scripts/box +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bash -USAGE="Usage: box [--enter]" - -# ===== Configuration ===== # -DATA_DIR="$HOME/.data/box" -# ========================= # - -function setup { - mkdir -p "$DATA_DIR" &>/dev/null -} - -function box { - mktemp -d - # TODO: use a custom name instead -} - -set -euo pipefail - -ENTER=false -for arg in $@; do - case "$arg" in - -e|--enter) - ENTER=true - shift - ;; - -h|--help) - echo "$USAGE" - ;; - -*) - echo "[!] Unknown opt \"$arg\"" >&2 - ;; - *) - echo "[!] Unknown arg \"$arg\"" >&2 - ;; - esac -done - -setup - -BOX=$(box) - -if [[ "$ENTER" == true ]]; then - cd "$BOX" -fi diff --git a/scripts/lsyscalls b/scripts/lsyscalls deleted file mode 100755 index 5cbd744..0000000 --- a/scripts/lsyscalls +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -# USAGE: lsyscalls | sort [-nk2] - -echo -e '#include '\ - | cpp -dM \ - | grep "#define __NR_.*[0-9]$" \ - | cut -d_ -f 4-