diff --git a/.sops.yaml b/.sops.yaml new file mode 100755 index 0000000..ce182a3 --- /dev/null +++ b/.sops.yaml @@ -0,0 +1,9 @@ +keys: + - &dev age1jqwgu73py5m6zsql6mntqlv7g54pfykgpn8d5emxwezyuf59xqhqvfxtej + - &wireframe age1ct3sesrp4e8jv982hauzw9slzkp99gyshcht9ughmfm0k9ze4pps5m3tt8 +creation_rules: + - path_regex: secrets/secrets.yaml$ + key_groups: + - age: + - *dev + - *wireframe diff --git a/home/dotfiles/alphacoder-1350453.png b/files/alphacoder-1350453.png old mode 100644 new mode 100755 similarity index 100% rename from home/dotfiles/alphacoder-1350453.png rename to files/alphacoder-1350453.png diff --git a/files/ghostty-config b/files/ghostty-config new file mode 100755 index 0000000..68303ce --- /dev/null +++ b/files/ghostty-config @@ -0,0 +1,22 @@ +theme = Tomorrow Night +font-family = Null Mono +font-feature = dlig +font-feature = calt +font-size = 12 + +cursor-style = bar +cursor-style-blink = false + +confirm-close-surface = false +mouse-hide-while-typing = true + +window-padding-x = 10 +window-padding-y = 10 + +background-blur-radius = 20 +background-opacity = 1 + +keybind = ctrl+shift+t=new_tab +keybind = ctrl+shift+n=new_window +keybind = ctrl+shift+r=reload_config +keybind = ctrl+shift+space=toggle_quick_terminal diff --git a/files/ghostty-oldworld b/files/ghostty-oldworld new file mode 100755 index 0000000..4e9e280 --- /dev/null +++ b/files/ghostty-oldworld @@ -0,0 +1,21 @@ +palette = 0=#27272a +palette = 1=#ea83a5 +palette = 2=#90b99f +palette = 3=#e6b99d +palette = 4=#9ca2cf +palette = 5=#aca1cf +palette = 6=#85b5ba +palette = 7=#c9c7cd +palette = 8=#353539 +palette = 9=#ED96B3 +palette = 10=#a7c8b3 +palette = 11=#eac5ae +palette = 12=#acb1d7 +palette = 13=#b7aed5 +palette = 14=#97c0c4 +palette = 15=#d3d1d7 +background = 161617 +foreground = c9c7cd +cursor-color = c9c7cd +selection-background = 3C3B3E +selection-foreground = c9c7cd diff --git a/system/waves/id_user.pub b/files/id_user.pub old mode 100644 new mode 100755 similarity index 100% rename from system/waves/id_user.pub rename to files/id_user.pub diff --git a/home/dotfiles/prompt.json b/files/prompt.json old mode 100644 new mode 100755 similarity index 73% rename from home/dotfiles/prompt.json rename to files/prompt.json index 9f37d21..d0b7cf6 --- a/home/dotfiles/prompt.json +++ b/files/prompt.json @@ -19,22 +19,24 @@ "style": "letter" }, "style": "plain", - "template": "{{.Path}} ", + "template": "{{ $segment := .Segments.Git }}{{ if $segment.Dir }}{{ $segment.RepoName }}{{if ne $segment.RepoName .Path}}{{ trimPrefix $segment.Dir .PWD }}{{ end }}{{ else }}{{ path .Path .Location }}{{ end }} ", "type": "path" }, { "foreground": "p:whiteish", "properties": { "branch_icon": "", - "branch_ahead_icon": "\u21e1", - "branch_behind_icon": "\u21e3", + "branch_identical_icon": "", + "branch_ahead_icon": "<#88C0D0>\u21e1", + "branch_behind_icon": "<#88C0D0>\u21e3", + "branch_gone_icon": "×", "fetch_stash_count": true, "fetch_status": true, "fetch_upstream_icon": true, "github_icon": "" }, "style": "plain", - "template": "on {{.HEAD}} ", + "template": "{{.HEAD}}{{if .BranchStatus }} {{.BranchStatus}}{{end}}{{ if .Working.Changed }}*{{ end }}{{if gt .StashCount 0}}${{end}} ", "type": "git" }, { @@ -45,7 +47,7 @@ "{{if gt .Code 0}}p:error{{end}}" ], "style": "plain", - "template": "{{if .Root}}#{{else}}λ{{end}} ", + "template": "{{if .Root}}#{{else}}\u276f{{end}} ", "type": "text" } ], @@ -71,7 +73,7 @@ "{{if contains .Env.IN_NIX_SHELL \"impure\"}}p:nix{{end}}", "{{if gt .Code 0 }}p:error{{ end }}" ], - "template": "λ " + "template": "\u276f " }, "secondary_prompt": { "foreground": "p:backgroundish", diff --git a/files/zellij/config.kdl b/files/zellij/config.kdl new file mode 100644 index 0000000..e69de29 diff --git a/flake.lock b/flake.lock old mode 100644 new mode 100755 index f4522c1..7b53690 --- a/flake.lock +++ b/flake.lock @@ -1,34 +1,17 @@ { "nodes": { - "crane": { - "flake": false, - "locked": { - "lastModified": 1699217310, - "narHash": "sha256-xpW3VFUG7yE6UE6Wl0dhqencuENSkV7qpnpe9I8VbPw=", - "owner": "ipetkov", - "repo": "crane", - "rev": "d535642bbe6f377077f7c23f0febb78b1463f449", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "ref": "v0.15.0", - "repo": "crane", - "type": "github" - } - }, "disko": { "inputs": { "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { - "lastModified": 1732742778, - "narHash": "sha256-i+Uw8VOHzQe9YdNwKRbzvaPWLE07tYVqUDzSFTXhRgk=", + "lastModified": 1744940522, + "narHash": "sha256-TNoetfICvd29DhxRPpmyKItQBDlqSvKcV+wGNkn14jk=", "owner": "nix-community", "repo": "disko", - "rev": "341482e2f4d888e3f60cae1c12c3df896e7230d8", + "rev": "51d33bbb7f1e74ba5f9d9a77357735149da99081", "type": "github" }, "original": { @@ -37,130 +20,37 @@ "type": "github" } }, - "dream2nix": { + "emacs-overlay": { "inputs": { "nixpkgs": [ - "nix-inspect", - "nci", - "nixpkgs" + "nixpkgs-unstable" ], - "purescript-overlay": "purescript-overlay", - "pyproject-nix": "pyproject-nix" + "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1709959559, - "narHash": "sha256-Gb+tUU+clGKVBwiznTQf0emZZ+heALqoVwUgI0O13L8=", + "lastModified": 1745169495, + "narHash": "sha256-e9+CfVIrI/iGZVjUeS/h/bOG/55MdvGwOP6m9ncz27Q=", "owner": "nix-community", - "repo": "dream2nix", - "rev": "42838c590971da17a4b6483962707b7fb7b8b9a7", + "repo": "emacs-overlay", + "rev": "d24224780e6cb41af7b46a17d39306e5e982aa15", "type": "github" }, "original": { "owner": "nix-community", - "repo": "dream2nix", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1732722421, - "narHash": "sha256-HRJ/18p+WoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "9ed2ac151eada2306ca8c418ebd97807bb08f6ac", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1717312683, - "narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=", - "owner": "nix-community", - "repo": "flake-compat", - "rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "flake-compat", + "repo": "emacs-overlay", "type": "github" } }, "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "neovim-nightly-overlay", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1730504689, - "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "506278e768c2a08bec68eb62932193e341f55c90", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "neovim-nightly-overlay", - "hercules-ci-effects", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1712014858, - "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", - "type": "github" - }, - "original": { - "id": "flake-parts", - "type": "indirect" - } - }, - "flake-parts_3": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1730504689, - "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", + "lastModified": 1743550720, + "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "506278e768c2a08bec68eb62932193e341f55c90", + "rev": "c621e8422220273271f52058f618c94e405bb0f5", "type": "github" }, "original": { @@ -174,11 +64,11 @@ "flake-utils": "flake-utils_2" }, "locked": { - "lastModified": 1722363685, - "narHash": "sha256-XCf2PIAT6lH7BwytgioPmVf/wkzXjSKScC4KzcZgb64=", + "lastModified": 1738591040, + "narHash": "sha256-4WNeriUToshQ/L5J+dTSWC5OJIwT39SEP7V7oylndi8=", "owner": "gytis-ivaskevicius", "repo": "flake-utils-plus", - "rev": "6b10f51ff73a66bb29f3bc8151a59d217713f496", + "rev": "afcb15b845e74ac5e998358709b2b5fe42a948d1", "type": "github" }, "original": { @@ -205,92 +95,6 @@ "type": "github" } }, - "flake-utils_3": { - "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "git-hooks": { - "inputs": { - "flake-compat": "flake-compat_2", - "gitignore": "gitignore", - "nixpkgs": [ - "neovim-nightly-overlay", - "nixpkgs" - ], - "nixpkgs-stable": [ - "neovim-nightly-overlay", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1732021966, - "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "3308484d1a443fc5bc92012435d79e80458fe43c", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "neovim-nightly-overlay", - "git-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": [ - "neovim-nightly-overlay", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1730903510, - "narHash": "sha256-mnynlrPeiW0nUQ8KGZHb3WyxAxA3Ye/BH8gMjdoKP6E=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "b89ac4d66d618b915b1f0a408e2775fe3821d141", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -298,113 +102,47 @@ ] }, "locked": { - "lastModified": 1732793095, - "narHash": "sha256-6TrknJ8CpvSSF4gviQSeD+wyj3siRcMvdBKhOXkEMKU=", + "lastModified": 1744743431, + "narHash": "sha256-iyn/WBYDc7OtjSawbegINDe/gIkok888kQxk3aVnkgg=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f7739d01080feb4549524e8f6927669b61c6ee3", + "rev": "c61bfe3ae692f42ce688b5865fac9e0de58e1387", "type": "github" }, "original": { "owner": "nix-community", + "ref": "release-24.11", "repo": "home-manager", "type": "github" } }, - "mk-naked-shell": { - "flake": false, + "impermanence": { "locked": { - "lastModified": 1681286841, - "narHash": "sha256-3XlJrwlR0nBiREnuogoa5i1b4+w/XPe0z8bbrJASw0g=", - "owner": "yusdacra", - "repo": "mk-naked-shell", - "rev": "7612f828dd6f22b7fb332cc69440e839d7ffe6bd", - "type": "github" - }, - "original": { - "owner": "yusdacra", - "repo": "mk-naked-shell", - "type": "github" - } - }, - "nci": { - "inputs": { - "crane": "crane", - "dream2nix": "dream2nix", - "mk-naked-shell": "mk-naked-shell", - "nixpkgs": [ - "nix-inspect", - "nixpkgs" - ], - "parts": "parts", - "rust-overlay": "rust-overlay", - "treefmt": "treefmt" - }, - "locked": { - "lastModified": 1710137478, - "narHash": "sha256-+hbUWY1PEItyx3CBOGsHlJEDO2wRY2N1mpBhiLBblck=", - "owner": "yusdacra", - "repo": "nix-cargo-integration", - "rev": "f3cc8751427e16ec48c0467357b3f3979a53ae9c", - "type": "github" - }, - "original": { - "owner": "yusdacra", - "repo": "nix-cargo-integration", - "type": "github" - } - }, - "neovim-nightly-overlay": { - "inputs": { - "flake-compat": "flake-compat", - "flake-parts": "flake-parts", - "git-hooks": "git-hooks", - "hercules-ci-effects": "hercules-ci-effects", - "neovim-src": "neovim-src", - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1732775233, - "narHash": "sha256-G9W0wi0MD9JvG3bmvWQSMVR684drSlWGY1auhCNxO8c=", + "lastModified": 1737831083, + "narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=", "owner": "nix-community", - "repo": "neovim-nightly-overlay", - "rev": "b09ab000f85a830fac6f599947dfa268227aab31", + "repo": "impermanence", + "rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170", "type": "github" }, "original": { "owner": "nix-community", - "repo": "neovim-nightly-overlay", - "type": "github" - } - }, - "neovim-src": { - "flake": false, - "locked": { - "lastModified": 1732733768, - "narHash": "sha256-y3LmGebXuQhLz9w1IzkDU8b464WvMvPCbIImpVvxmcI=", - "owner": "neovim", - "repo": "neovim", - "rev": "76dcc7029b200e1d85024d7ba4a34c602e730dbe", - "type": "github" - }, - "original": { - "owner": "neovim", - "repo": "neovim", + "repo": "impermanence", "type": "github" } }, "nh": { "inputs": { "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { - "lastModified": 1732782112, - "narHash": "sha256-8rxzWGOVyijmE2ojWJxPEWqtUQ7i/lA5TvLoklwI4qw=", + "lastModified": 1743682999, + "narHash": "sha256-bg+aAN8K90r3m/I+xXiXG0gawpbkshwlk93wxUN7KEk=", "owner": "viperML", "repo": "nh", - "rev": "24293d624556d32bd502c440b352e4fef4eeab6d", + "rev": "9e9a4590b38b62b28f07a1fae973ce7b6ca0687a", "type": "github" }, "original": { @@ -415,18 +153,17 @@ }, "nix-gaming": { "inputs": { - "flake-parts": "flake-parts_3", + "flake-parts": "flake-parts", "nixpkgs": [ - "nixpkgs" - ], - "umu": "umu" + "nixpkgs-unstable" + ] }, "locked": { - "lastModified": 1732758553, - "narHash": "sha256-divlhUduT0/t8D9k11Yd3Ah3xpr302vV1KXxIMb8I3M=", + "lastModified": 1745114168, + "narHash": "sha256-x+HdFBsfRznwWPpnqXM3yaTVz2CcK5X/ThY6BA3PgcI=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "effe1d54e23f430d3e803f63e9e47aba33acfb63", + "rev": "05b70003daf802fd5c0af3903fab5f23fef3c47c", "type": "github" }, "original": { @@ -435,100 +172,60 @@ "type": "github" } }, - "nix-inspect": { - "inputs": { - "nci": "nci", - "nixpkgs": "nixpkgs_2", - "parts": "parts_2" - }, - "locked": { - "lastModified": 1717293583, - "narHash": "sha256-Upz+fnWJjzt5WokjO/iaiPbqiwSrqpWjrpcFOqQ4p0E=", - "owner": "bluskript", - "repo": "nix-inspect", - "rev": "c55921e1d1cf980ff6351273fde6cedd5d8fa320", - "type": "github" - }, - "original": { - "owner": "bluskript", - "repo": "nix-inspect", - "type": "github" - } - }, - "nixos-cosmic": { - "inputs": { - "flake-compat": "flake-compat_3", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable", - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1732757557, - "narHash": "sha256-zADldaLfiSb2iGPhcSJPokGypYa1Fix0llhWkMvm8pQ=", - "owner": "lilyinstarlight", - "repo": "nixos-cosmic", - "rev": "5116835b8eb2ec18ec258050a11d374d38ac8764", - "type": "github" - }, - "original": { - "owner": "lilyinstarlight", - "repo": "nixos-cosmic", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1732617236, - "narHash": "sha256-PYkz6U0bSEaEB1al7O1XsqVNeSNS+s3NVclJw7YC43w=", - "owner": "NixOS", + "lastModified": 1744440957, + "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e", + "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "nixos-24.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-lib": { "locked": { - "lastModified": 1730504152, - "narHash": "sha256-lXvH/vOfb4aGYyvFmZK/HlsNsr/0CVWlwYvo2rxJk3s=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz" + "lastModified": 1743296961, + "narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz" + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" } }, "nixpkgs-stable": { "locked": { - "lastModified": 1731797254, - "narHash": "sha256-df3dJApLPhd11AlueuoN0Q4fHo/hagP75LlM5K1sz9g=", + "lastModified": 1744440957, + "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e8c38b73aeb218e27163376a2d617e61a2ad9b59", + "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-24.05", + "ref": "nixos-24.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-unstable": { "locked": { - "lastModified": 1732521221, - "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=", + "lastModified": 1744932701, + "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d", + "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef", "type": "github" }, "original": { @@ -540,43 +237,27 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1709961763, - "narHash": "sha256-6H95HGJHhEZtyYA3rIQpvamMKAGoa8Yh2rFV29QnuGw=", - "owner": "nixos", + "lastModified": 1744502386, + "narHash": "sha256-QAd1L37eU7ktL2WeLLLTmI6P9moz9+a/ONO8qNBYJgM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "3030f185ba6a4bf4f18b87f345f104e6a6961f34", + "rev": "f6db44a8daa59c40ae41ba6e5823ec77fe0d2124", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_3": { "locked": { - "lastModified": 1732749044, - "narHash": "sha256-T38FQOg0BV5M8FN1712fovzNakSOENEYs+CSkg31C9Y=", + "lastModified": 1736344531, + "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0c5b4ecbed5b155b705336aa96d878e55acd8685", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1658161305, - "narHash": "sha256-X/nhnMCa1Wx4YapsspyAs6QYz6T/85FofrI6NpdPDHg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "e4d49de45a3b5dbcb881656b4e3986e666141ea9", + "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", "type": "github" }, "original": { @@ -586,182 +267,36 @@ "type": "github" } }, - "parts": { - "inputs": { - "nixpkgs-lib": [ - "nix-inspect", - "nci", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709336216, - "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "parts_2": { - "inputs": { - "nixpkgs-lib": [ - "nix-inspect", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709336216, - "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "purescript-overlay": { - "inputs": { - "nixpkgs": [ - "nix-inspect", - "nci", - "dream2nix", - "nixpkgs" - ], - "slimlock": "slimlock" - }, - "locked": { - "lastModified": 1696022621, - "narHash": "sha256-eMjFmsj2G1E0Q5XiibUNgFjTiSz0GxIeSSzzVdoN730=", - "owner": "thomashoneyman", - "repo": "purescript-overlay", - "rev": "047c7933abd6da8aa239904422e22d190ce55ead", - "type": "github" - }, - "original": { - "owner": "thomashoneyman", - "repo": "purescript-overlay", - "type": "github" - } - }, - "pyproject-nix": { - "flake": false, - "locked": { - "lastModified": 1702448246, - "narHash": "sha256-hFg5s/hoJFv7tDpiGvEvXP0UfFvFEDgTdyHIjDVHu1I=", - "owner": "davhau", - "repo": "pyproject.nix", - "rev": "5a06a2697b228c04dd2f35659b4b659ca74f7aeb", - "type": "github" - }, - "original": { - "owner": "davhau", - "ref": "dream2nix", - "repo": "pyproject.nix", - "type": "github" - } - }, "root": { "inputs": { "disko": "disko", + "emacs-overlay": "emacs-overlay", "flake-utils": "flake-utils", "home-manager": "home-manager", - "neovim-nightly-overlay": "neovim-nightly-overlay", + "impermanence": "impermanence", "nh": "nh", "nix-gaming": "nix-gaming", - "nix-inspect": "nix-inspect", - "nixos-cosmic": "nixos-cosmic", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs", "nixpkgs-unstable": "nixpkgs-unstable", - "st": "st" + "sops-nix": "sops-nix", + "zen-browser": "zen-browser" } }, - "rust-overlay": { - "flake": false, - "locked": { - "lastModified": 1710123130, - "narHash": "sha256-EoGL/WSM1M2L099Q91mPKO/FRV2iu2ZLOEp3y5sLfiE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "73aca260afe5d41d3ebce932c8d896399c9d5174", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { + "sops-nix": { "inputs": { - "nixpkgs": [ - "nixos-cosmic", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1732588352, - "narHash": "sha256-J2/hxOO1VtBA/u+a+9E+3iJpWT3xsBdghgYAVfoGCJo=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "414e748aae5c9e6ca63c5aafffda03e5dad57ceb", + "lastModified": 1744669848, + "narHash": "sha256-pXyanHLUzLNd3MX9vsWG+6Z2hTU8niyphWstYEP3/GU=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "61154300d945f0b147b30d24ddcafa159148026a", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "slimlock": { - "inputs": { - "nixpkgs": [ - "nix-inspect", - "nci", - "dream2nix", - "purescript-overlay", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1688610262, - "narHash": "sha256-Wg0ViDotFWGWqKIQzyYCgayeH8s4U1OZcTiWTQYdAp4=", - "owner": "thomashoneyman", - "repo": "slimlock", - "rev": "b5c6cdcaf636ebbebd0a1f32520929394493f1a6", - "type": "github" - }, - "original": { - "owner": "thomashoneyman", - "repo": "slimlock", - "type": "github" - } - }, - "st": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_4" - }, - "locked": { - "lastModified": 1726952303, - "narHash": "sha256-d2B4oIpNggaF5bIz6hZ6Bwa9pVzChmL/NbqKtx+8TTg=", - "owner": "devawaves", - "repo": "st", - "rev": "12748a3f10adcb69a9bda7629b771dc6bbaf7da5", - "type": "github" - }, - "original": { - "owner": "devawaves", - "repo": "st", + "owner": "Mic92", + "repo": "sops-nix", "type": "github" } }, @@ -780,52 +315,23 @@ "type": "github" } }, - "treefmt": { + "zen-browser": { "inputs": { - "nixpkgs": [ - "nix-inspect", - "nci", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1710088047, - "narHash": "sha256-eSqKs6ZCsX9xJyNYLeMDMrxzIDsYtaWClfZCOp0ok6Y=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "720322c5352d7b7bd2cb3601a9176b0e91d1de7d", + "lastModified": 1742688375, + "narHash": "sha256-yVsET+na0V2edU+5xZTchrZqbN7+uMOOtZ7FfZc79bg=", + "owner": "valnyx17", + "repo": "zen-browser-flake", + "rev": "05e9fd204ae043ceb1ed056460b4ca03fa413c12", "type": "github" }, "original": { - "owner": "numtide", - "repo": "treefmt-nix", + "owner": "valnyx17", + "repo": "zen-browser-flake", "type": "github" } - }, - "umu": { - "inputs": { - "nixpkgs": [ - "nix-gaming", - "nixpkgs" - ] - }, - "locked": { - "dir": "packaging/nix", - "lastModified": 1732337089, - "narHash": "sha256-dwFza03ETqrcmVGSCdgDDKTWKRgckpQ3vXkZRCYtM9g=", - "ref": "refs/heads/main", - "rev": "f6a6af3191f5497d95d8f8aaa08826a45da199c4", - "revCount": 842, - "submodules": true, - "type": "git", - "url": "https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix" - }, - "original": { - "dir": "packaging/nix", - "submodules": true, - "type": "git", - "url": "https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix old mode 100644 new mode 100755 index bd7b32f..3ce09e4 --- a/flake.nix +++ b/flake.nix @@ -1,41 +1,32 @@ { - description = "nixos system configuration"; - + description = "V's NixOS Configuration"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + zen-browser.url = "github:valnyx17/zen-browser-flake"; flake-utils.url = "github:gytis-ivaskevicius/flake-utils-plus"; - home-manager = { - url = "github:nix-community/home-manager"; + url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; }; - disko = { url = "github:nix-community/disko"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; }; - + sops-nix.url = "github:Mic92/sops-nix"; + impermanence.url = "github:nix-community/impermanence"; nh = { url = "github:viperML/nh"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; }; - - nix-inspect.url = "github:bluskript/nix-inspect"; - nix-gaming = { url = "github:fufexan/nix-gaming"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; }; - - nixos-cosmic = { - url = "github:lilyinstarlight/nixos-cosmic"; - inputs.nixpkgs.follows = "nixpkgs"; + emacs-overlay = { + url = "github:nix-community/emacs-overlay"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; }; - - st.url = "github:devawaves/st"; - - neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; }; outputs = { @@ -43,7 +34,6 @@ nixpkgs, home-manager, flake-utils, - nixos-cosmic, ... } @ inputs: let mkApp = flake-utils.lib.mkApp; @@ -51,60 +41,49 @@ in mkFlake { inherit self inputs nixpkgs home-manager; - channelsConfig.allowUnfree = true; + overlays = import ./overlays.nix {inherit inputs;}; sharedOverlays = [ self.overlays.additions self.overlays.modifications self.overlays.unstable-packages ]; - # host defaults - hostDefaults.system = "x86_64-linux"; - hostDefaults.modules = []; hostDefaults.extraArgs = {inherit flake-utils;}; hostDefaults.specialArgs = { inherit inputs; inherit (self) outputs; }; - hosts.waves = { + hosts.wireframe = { system = "x86_64-linux"; modules = [ inputs.disko.nixosModules.default - (import ./disko.nix {device = "/dev/disk/by-id/nvme-Samsung_SSD_980_PRO_with_Heatsink_1TB_S6WSNJ0T900943T";}) - { - nix.settings = { - substituters = ["https://cosmic.cachix.org/"]; - trusted-public-keys = ["cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="]; - }; - } - nixos-cosmic.nixosModules.default - ./system/waves/configuration.nix - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - } - home-manager.nixosModules.home-manager - ./home/valerie/home.nix + (import ./hosts/wireframe/disko.nix {device = "/dev/disk/by-id/nvme-Samsung_SSD_979_PRO_with_Heatsink_1TB_S6WSNJ0T900943T";}) + inputs.impermanence.nixosModules.impermanence + ./hosts/wireframe/configuration.nix ]; - output = "nixosConfigurations"; }; - overlays = import ./overlays {inherit inputs;}; - } - // flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; - inherit (self) outputs; - in { - packages = import ./pkgs pkgs; - - apps = { - "disko" = { - type = "app"; - program = "${outputs.packages.${system}.disko}/bin/disko"; + homeConfigurations = { + "v@wireframe" = home-manager.lib.homeManagerConfiguration { + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ + self.overlays.additions + self.overlays.modifications + self.overlays.unstable-packages + inputs.emacs-overlay.overlays.default + ]; + config = { + allowUnfree = true; + }; + }; + modules = [./hosts/wireframe/home.nix]; + extraSpecialArgs = { + inherit inputs; + inherit (self) outputs; + }; }; }; - - formatter = pkgs.alejandra; - }); + }; } diff --git a/home/dotfiles/lf-icons b/home/dotfiles/lf-icons deleted file mode 100644 index 4022691..0000000 --- a/home/dotfiles/lf-icons +++ /dev/null @@ -1,377 +0,0 @@ -# vim:ft=conf - -# These examples require Nerd Fonts or a compatible font to be used. -# See https://www.nerdfonts.com for more information. - -# default values from lf (with matching order) -# ln l # LINK -# or l # ORPHAN -# tw t # STICKY_OTHER_WRITABLE -# ow d # OTHER_WRITABLE -# st t # STICKY -# di d # DIR -# pi p # FIFO -# so s # SOCK -# bd b # BLK -# cd c # CHR -# su u # SETUID -# sg g # SETGID -# ex x # EXEC -# fi - # FILE - -# file types (with matching order) -ln  # LINK -or  # ORPHAN -tw t # STICKY_OTHER_WRITABLE -ow  # OTHER_WRITABLE -st t # STICKY -di  # DIR -pi p # FIFO -so s # SOCK -bd b # BLK -cd c # CHR -su u # SETUID -sg g # SETGID -ex  # EXEC -fi  # FILE - -# disable some default filetype icons, let them choose icon by filename -# ln  # LINK -# or  # ORPHAN -# tw # STICKY_OTHER_WRITABLE -# ow # OTHER_WRITABLE -# st # STICKY -# di  # DIR -# pi # FIFO -# so # SOCK -# bd # BLK -# cd # CHR -# su # SETUID -# sg # SETGID -# ex # EXEC -# fi  # FILE - -# file extensions (vim-devicons) -*.styl  -*.sass  -*.scss  -*.htm  -*.html  -*.slim  -*.haml  -*.ejs  -*.css  -*.less  -*.md  -*.mdx  -*.markdown  -*.rmd  -*.json  -*.webmanifest  -*.js  -*.mjs  -*.jsx  -*.rb  -*.gemspec  -*.rake  -*.php  -*.py  -*.pyc  -*.pyo  -*.pyd  -*.coffee  -*.mustache  -*.hbs  -*.conf  -*.ini  -*.yml  -*.yaml  -*.toml  -*.bat  -*.mk  -*.jpg  -*.jpeg  -*.bmp  -*.png  -*.webp  -*.gif  -*.ico  -*.twig  -*.cpp  -*.c++  -*.cxx  -*.cc  -*.cp  -*.c  -*.cs 󰌛 -*.h  -*.hh  -*.hpp  -*.hxx  -*.hs  -*.lhs  -*.nix  -*.lua  -*.java  -*.sh  -*.fish  -*.bash  -*.zsh  -*.ksh  -*.csh  -*.awk  -*.ps1  -*.ml λ -*.mli λ -*.diff  -*.db  -*.sql  -*.dump  -*.clj  -*.cljc  -*.cljs  -*.edn  -*.scala  -*.go  -*.dart  -*.xul  -*.sln  -*.suo  -*.pl  -*.pm  -*.t  -*.rss  -'*.f#'  -*.fsscript  -*.fsx  -*.fs  -*.fsi  -*.rs  -*.rlib  -*.d  -*.erl  -*.hrl  -*.ex  -*.exs  -*.eex  -*.leex  -*.heex  -*.vim  -*.ai  -*.psd  -*.psb  -*.ts  -*.tsx  -*.jl  -*.pp  -*.vue  -*.elm  -*.swift  -*.xcplayground  -*.tex 󰙩 -*.r 󰟔 -*.rproj 󰗆 -*.sol 󰡪 -*.pem  - -# file names (vim-devicons) (case-insensitive not supported in lf) -*gruntfile.coffee  -*gruntfile.js  -*gruntfile.ls  -*gulpfile.coffee  -*gulpfile.js  -*gulpfile.ls  -*mix.lock  -*dropbox  -*.ds_store  -*.gitconfig  -*.gitignore  -*.gitattributes  -*.gitlab-ci.yml  -*.bashrc  -*.zshrc  -*.zshenv  -*.zprofile  -*.vimrc  -*.gvimrc  -*_vimrc  -*_gvimrc  -*.bashprofile  -*favicon.ico  -*license  -*node_modules  -*react.jsx  -*procfile  -*dockerfile  -*docker-compose.yml  -*docker-compose.yaml  -*compose.yml  -*compose.yaml  -*rakefile  -*config.ru  -*gemfile  -*makefile  -*cmakelists.txt  -*robots.txt 󰚩 - -# file names (case-sensitive adaptations) -*Gruntfile.coffee  -*Gruntfile.js  -*Gruntfile.ls  -*Gulpfile.coffee  -*Gulpfile.js  -*Gulpfile.ls  -*Dropbox  -*.DS_Store  -*LICENSE  -*React.jsx  -*Procfile  -*Dockerfile  -*Docker-compose.yml  -*Docker-compose.yaml  -*Rakefile  -*Gemfile  -*Makefile  -*CMakeLists.txt  - -# file patterns (vim-devicons) (patterns not supported in lf) -# .*jquery.*\.js$  -# .*angular.*\.js$  -# .*backbone.*\.js$  -# .*require.*\.js$  -# .*materialize.*\.js$  -# .*materialize.*\.css$  -# .*mootools.*\.js$  -# .*vimrc.*  -# Vagrantfile$  - -# file patterns (file name adaptations) -*jquery.min.js  -*angular.min.js  -*backbone.min.js  -*require.min.js  -*materialize.min.js  -*materialize.min.css  -*mootools.min.js  -*vimrc  -Vagrantfile  - -# archives or compressed (extensions from dircolors defaults) -*.tar  -*.tgz  -*.arc  -*.arj  -*.taz  -*.lha  -*.lz4  -*.lzh  -*.lzma  -*.tlz  -*.txz  -*.tzo  -*.t7z  -*.zip  -*.z  -*.dz  -*.gz  -*.lrz  -*.lz  -*.lzo  -*.xz  -*.zst  -*.tzst  -*.bz2  -*.bz  -*.tbz  -*.tbz2  -*.tz  -*.deb  -*.rpm  -*.jar  -*.war  -*.ear  -*.sar  -*.rar  -*.alz  -*.ace  -*.zoo  -*.cpio  -*.7z  -*.rz  -*.cab  -*.wim  -*.swm  -*.dwm  -*.esd  - -# image formats (extensions from dircolors defaults) -*.jpg  -*.jpeg  -*.mjpg  -*.mjpeg  -*.gif  -*.bmp  -*.pbm  -*.pgm  -*.ppm  -*.tga  -*.xbm  -*.xpm  -*.tif  -*.tiff  -*.png  -*.svg  -*.svgz  -*.mng  -*.pcx  -*.mov  -*.mpg  -*.mpeg  -*.m2v  -*.mkv  -*.webm  -*.ogm  -*.mp4  -*.m4v  -*.mp4v  -*.vob  -*.qt  -*.nuv  -*.wmv  -*.asf  -*.rm  -*.rmvb  -*.flc  -*.avi  -*.fli  -*.flv  -*.gl  -*.dl  -*.xcf  -*.xwd  -*.yuv  -*.cgm  -*.emf  -*.ogv  -*.ogx  - -# audio formats (extensions from dircolors defaults) -*.aac  -*.au  -*.flac  -*.m4a  -*.mid  -*.midi  -*.mka  -*.mp3  -*.mpc  -*.ogg  -*.ra  -*.wav  -*.oga  -*.opus  -*.spx  -*.xspf  - -# other formats -*.pdf  diff --git a/home/dotfiles/pst b/home/dotfiles/pst deleted file mode 100644 index 12dc8af..0000000 --- a/home/dotfiles/pst +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash - -URL="https://pastebin.dessa.dev" - -FILEPATH="$1" -FILENAME=$(basename -- "$FILEPATH") -EXTENSION="''${FILENAME##*.}" - -if [ ! -f $FILEPATH ]; then - # curl the file from the internet, given the id - # future regex for any wantsgunbin link: ^((http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b\/)?[0-9a-zA-Z]{5,}(\..*)?$ - if [[ $FILEPATH =~ ^(https:\/\/pastebin\.dessa\.dev\/)?[0-9a-zA-Z]{5,}(\..*)?$ ]]; then - OUT=$(mktemp) - echo $OUT - curl -sL https://pastebin.dessa.dev/$FILEPATH > $OUT - exit 0 - else - echo "File not found: $FILEPATH" - exit 1 - fi -fi - -RESPONSE=$(curl --data-binary @''${FILEPATH:-/dev/stdin} --url $URL) -PASTELINK="$URL$RESPONSE" - -[ -z "$EXTENSION" ] && echo $PASTELINK || echo $PASTELINK.$EXTENSION diff --git a/home/dotfiles/run b/home/dotfiles/run deleted file mode 100644 index 0509177..0000000 --- a/home/dotfiles/run +++ /dev/null @@ -1,5 +0,0 @@ -if [[ -z "$2" ]]; then - nix-shell -p $1 --run zsh -else - nix-shell -p $1 --run "$2" -fi diff --git a/home/dotfiles/wezterm.lua b/home/dotfiles/wezterm.lua deleted file mode 100644 index 8d14dca..0000000 --- a/home/dotfiles/wezterm.lua +++ /dev/null @@ -1,51 +0,0 @@ -local wezterm = require("wezterm") - -local config = wezterm.config_builder() - -config.color_scheme = "OneHalfDark" -config.use_fancy_tab_bar = false -config.window_decorations = "RESIZE" -config.hide_tab_bar_if_only_one_tab = true -config.font = wezterm.font_with_fallback({ - { family = "CommitMono", weight = "Medium", harfbuzz_features = { 'ss01=on', 'ss02=on', 'ss03=on', 'ss04=on', 'ss05=on' } }, - "Symbols Nerd Font", -}) - -config.font_size = 13 --- config.line_height = 1.2 - -config.set_environment_variables = { - TERM = "xterm-256color", -} - -config.window_padding = { - left = 10, - right = 10, - top = 10, - bottom = 10, -} - -config.default_cursor_style = "SteadyBar" -config.cursor_blink_rate = 0 - --- wayland support -config.enable_wayland = false - -config.unix_domains = { - { - name = "unix", - }, -} -config.freetype_load_flags = "DEFAULT" -config.window_background_opacity = 1.00 -config.max_fps = 144 -config.scrollback_lines = 10000 - --- This causes `wezterm` to act as though it was started as --- `wezterm connect unix` by default, connecting to the unix --- domain on startup. --- If you prefer to connect manually, leave out this line. --- config.default_gui_startup_args = { "connect", "unix" } -config.ssh_domains = wezterm.default_ssh_domains() - -return config diff --git a/home/modules/default.nix b/home/modules/default.nix deleted file mode 100644 index 9dfa643..0000000 --- a/home/modules/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -[ - ./core - ./term - ./dev - ./gnome.nix -] diff --git a/home/modules/gnome.nix b/home/modules/gnome.nix deleted file mode 100644 index 573148b..0000000 --- a/home/modules/gnome.nix +++ /dev/null @@ -1,89 +0,0 @@ -{pkgs, ...}: { - gtk = { - enable = true; - - iconTheme = { - name = "Zafiro-icons-Dark"; - package = pkgs.zafiro-icons; - }; - - # theme = { - # name = "Materia-dark"; - # package = pkgs.materia-theme; - # }; - - cursorTheme = { - name = "graphite-dark"; - package = pkgs.graphite-cursors; - }; - }; - - dconf = { - enable = true; - - settings = { - "org/gnome/shell" = { - disable-user-extensions = false; - - enabled-extensions = [ - pkgs.gnomeExtensions.user-themes.extensionUuid - pkgs.gnomeExtensions.unite.extensionUuid - pkgs.gnomeExtensions.blur-my-shell.extensionUuid - ]; - }; - - "org/gnome/shell/extensions/user-theme" = { - name = ""; - }; - - "org/gnome/shell/extensions/unite" = { - desktop-name-text = "Desktop"; - greyscale-tray-icons = true; - hide-activities-button = "always"; - hide-window-titlebars = "always"; - show-window-buttons = "always"; - show-window-title = "tiled"; - window-buttons-placement = "first"; - window-buttons-theme = "arc"; - }; - - "org/gnome/desktop/interface" = { - color-scheme = "prefer-dark"; - }; - - "org/gnome/desktop/wm/preferences" = { - resize-with-right-button = true; - }; - - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { - binding = "Return"; - command = "kitty"; - name = "Open Terminal"; - }; - - "org/gnome/settings-daemon/plugins/media-keys" = { - custom-keybindings = [ - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" - ]; - }; - - "org/gnome/desktop/background" = { - picture-uri = "file:///${../dotfiles/alphacoder-1350453.png}"; - picture-uri-dark = "file:///${../dotfiles/alphacoder-1350453.png}"; - }; - }; - }; - - home.packages = with pkgs; [ - # Gnome extensions - gnomeExtensions.unite - gnomeExtensions.user-themes - gnomeExtensions.blur-my-shell - - # extensions manager - gnome-extension-manager - - # Theme - materia-theme - ]; -} diff --git a/home/modules/term/default.nix b/home/modules/term/default.nix deleted file mode 100644 index 9be8522..0000000 --- a/home/modules/term/default.nix +++ /dev/null @@ -1,444 +0,0 @@ -{ - config, - pkgs, - inputs, - ... -}: let - pst = pkgs.writeShellScriptBin "pst" (builtins.readFile ../../dotfiles/pst); - runpkg = pkgs.writeShellScriptBin "run" (builtins.readFile ../../dotfiles/run); -in { - programs = { - wezterm = { - enable = true; - extraConfig = builtins.readFile ../../dotfiles/wezterm.lua; - }; - kitty = { - enable = true; - package = pkgs.unstable.kitty; - shellIntegration.enableZshIntegration = true; - theme = "One Half Dark"; - environment = { - "TERM" = "xterm-256color"; - }; - settings = { - font_family = "CommitMono"; - font_size = "11.0"; - cursor_shape = "beam"; - cursor_blink_interval = "0.0"; - cursor_trail = "3"; - cursor_trail_decay = "0.1 0.4"; - disable_ligatures = "never"; - undercurl_style = "thick-sparse"; - enable_audio_bell = false; - confirm_os_window_close = 0; - dynamic_background_opacity = true; - mouse_hide_wait = "-1.0"; - window_padding_width = 10; - # background_opacity = "0.95"; - background_blur = 5; - symbol_map = let - mappings = [ - "U+23FB-U+23FE" - "U+2B58" - "U+E200-U+E2A9" - "U+E0A0-U+E0A3" - "U+E0B0-U+E0BF" - "U+E0C0-U+E0C8" - "U+E0CC-U+E0CF" - "U+E0D0-U+E0D2" - "U+E0D4" - "U+E700-U+E7C5" - "U+F000-U+F2E0" - "U+2665" - "U+26A1" - "U+F400-U+F4A8" - "U+F67C" - "U+E000-U+E00A" - "U+F300-U+F313" - "U+E5FA-U+E62B" - ]; - in - (builtins.concatStringsSep "," mappings) + " Symbols Nerd Font Mono"; - input_delay = "0"; - repaint_delay = "2"; - sync_to_monitor = "no"; - wayland_enable_ime = "no"; - }; - extraConfig = '' - font_features "0xProto-Italic +ss01" - font_features "CommitMono +ss01 +ss02 +ss03 +ss04 +ss05" - ''; - }; - broot = { - enable = true; - enableZshIntegration = true; - settings = { - default_flags = "-gh"; - show_matching_characters_on_path_searches = false; - modal = true; - }; - }; - yazi = { - enable = true; - enableZshIntegration = true; - package = pkgs.unstable.yazi; - flavors = { - tokyo-night = pkgs.fetchFromGitHub { - owner = "BennyOe"; - repo = "tokyo-night.yazi"; - rev = "024fb096821e7d2f9d09a338f088918d8cfadf34"; - hash = "sha256-IhCwP5v0qbuanjfMRbk/Uatu31rPNVChJn5Y9c5KWYQ="; - }; - }; - settings = { - manager = { - show_hidden = true; - show_dir_first = true; - show_symlink = true; - }; - flavor.use = "tokyo-night"; - opener = { - edit = [ - { - run = ''nvim "$@"''; - block = true; - for = "unix"; - } - ]; - play = [ - { - run = ''mpv "$@"''; - orphan = true; - for = "unix"; - } - ]; - open = [ - { - run = ''xdg-open "$@"''; - desc = "Open"; - } - ]; - }; - }; - }; - tmux = { - enable = true; - mouse = true; - prefix = "C-Space"; - keyMode = "vi"; - baseIndex = 1; - plugins = with pkgs.tmuxPlugins; [ - vim-tmux-navigator - yank - { - plugin = catppuccin; - extraConfig = - /* - tmux - */ - '' - # NOTE: you can use vars with $ and $${} as long as the str is double quoted: "" - # WARNING: hex colors can't contain capital letters - - # --> Gruvbox (Material) - set -g @thm_bg "#222526" - set -g @thm_fg "#d4be98" - set -g @thm_cyan "#89b482" - set -g @thm_black "#665c54" - set -g @thm_gray "#504945" - set -g @thm_magenta "#d3869b" - set -g @thm_pink "#ea6962" - set -g @thm_red "#ea6962" - set -g @thm_green "#a9b665" - set -g @thm_yellow "#d8a657" - set -g @thm_blue "#7daea3" - set -g @thm_orange "#e78a4e" - set -g @thm_black4 "#928374" - - set -g @catppuccin_window_status_style "slanted" - set -g status-position top - ''; - } - # resurrect - # { - # plugin = continuum; - # extraConfig = '' - # set -g @continuum-restore 'on' - # ''; - # } - # { - # plugin = nord; - # extraConfig = '' - # set -g status-position top - # ''; - # } - # { - # plugin = tokyo-night-tmux; - # extraConfig = '' - ## tokyo night tmux config - #set -g @tokyo-night-tmux_theme "night" - #set -g @tokyo-night-tmux_show_datetime 0 - #set -g @tokyo-night-tmux_path_format relative - #set -g @tokyo-night-tmux_window_id_style digital - #set -g @tokyo-night-tmux_pane_id_style hide - #set -g @tokyo-night-tmux_show_git 0 - # - ## Undercurl fixes (tokyonight.nvim) - #set -g default-terminal "${TERM}" - #set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support - #set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # underscore colours - needs tmux 3.0 - # ''; - # } - ]; - extraConfig = - /* - tmux - */ - '' - set -g default-terminal "tmux-256color" - set-option -sa terminal-overrides ",xterm*:Tc" - set-window-option -g pane-base-index 1 - set-option -g renumber-windows on - set -sg escape-time 0 - - # Use Alt-arrow keys without prefix key to switch panes - bind -n M-Left select-pane -L - bind -n M-Right select-pane -R - bind -n M-Up select-pane -U - bind -n M-Down select-pane -D - - # Shift arrow to switch windows - bind -n S-Left previous-window - bind -n S-Right next-window - - # Shift Alt vim keys to switch windows - bind -n M-H previous-window - bind -n M-L next-window - - bind-key -T copy-mode-vi v send-keys -X begin-selection - bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle - bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel - - bind '_' split-window -v -c "#{pane_current_path}" - bind | split-window -h -c "#{pane_current_path}" - bind c new-window -c "#{pane_current_path}" - - set -g status-position top - run '~/.tmux/plugins/tpm/tpm' - ''; - }; - }; - xdg.configFile."lf/icons".source = ../../dotfiles/lf-icons; - programs.bat.enable = true; - programs.eza.enable = true; - programs.man.enable = true; - home.packages = with pkgs; [ - ouch - tmuxifier - unstable.curlie - unstable.gping - unstable.ov - unstable.tailspin - unstable.viddy - netscanner - kalker - unstable.steam-run - fd - ripgrep - await - procs - duf - dust - nurl - delta - bottom - unstable.dwt1-shell-color-scripts - ]; - - programs.fzf = { - enable = true; - enableZshIntegration = true; - }; - services.gpg-agent.enableZshIntegration = true; - programs.zsh = { - enable = true; - dotDir = ".config/zsh"; - enableCompletion = true; - history = { - path = "${config.home.homeDirectory}/.histfile"; - save = 1000000000; - size = 100000000; - }; - initExtraBeforeCompInit = '' - # zstyle ':completion:*' menu select - zstyle ':completion:*' menu no - zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' - zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS} - zstyle ':completion:*:descriptions' format '[%d]' - zstyle ':completion::complete:*' gain-privileges 1 - zstyle ':fzf-tab:complete:cd:*' fzf-preview 'eza -1 --color=always $realpath' - zstyle ':fzf-tab:complete:+__zoxide_z:*' fzf-preview 'eza -1 --color=always $realpath' - zstyle ':fzf-tab:*' switch-group '<' '>' - zstyle ':completion:*:git-checkout:*' sort false - # _comp_options+=(globdots) - ''; - initExtra = '' - setopt APPEND_HISTORY # Append to histfile instead of overwriting. - setopt SHARE_HISTORY # Share history between all sessions. - setopt HIST_IGNORE_SPACE # Do not record an event starting with a space. - setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate. - setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file. - setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again. - setopt HIST_FIND_NO_DUPS # Do not display a previously found event. - setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format. - setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history. - - # Set the directory we want to store zinit (and plugins) in - # The XDG_DATA_HOME:-$HOME... line chooses XDG_DATA_HOME if it exists, otherwise .local/share - ZINIT_HOME="''${XDG_DATA_HOME:-''${HOME}/.local/share}/zinit/zinit.git" - - # download zinit if it doesn't exist - if [ ! -d "$ZINIT_HOME" ]; then - mkdir -p "$(dirname $ZINIT_HOME)" - git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME" - fi - - # load zinit - source "''${ZINIT_HOME}/zinit.zsh" - - #region plugins - zinit light zsh-users/zsh-completions - autoload -U compinit && compinit - eval "$(fzf --zsh)" - zinit light Aloxaf/fzf-tab - zinit light zsh-users/zsh-syntax-highlighting - zinit light zsh-users/zsh-autosuggestions - - # snippets - zinit snippet OMZP::git - zinit snippet OMZP::sudo - zinit snippet OMZP::debian - zinit snippet OMZP::command-not-found - zinit snippet OMZP::extract - - zinit cdreplay -q - eval "$(zoxide init --cmd cd zsh)" - #endregion - - #region setopts - while read -r option; do - setopt $option - done <<-EOF - ALWAYS_TO_END - AUTO_LIST - AUTO_MENU - AUTO_PARAM_SLASH - AUTO_PUSHD - ALWAYS_TO_END - COMPLETE_IN_WORD - EXTENDED_GLOB - INC_APPEND_HISTORY - INTERACTIVE_COMMENTS - MENU_COMPLETE - NO_BEEP - NOTIFY - PATH_DIRS - PUSHD_IGNORE_DUPS - PUSHD_SILENT - EOF - while read -r option; do - unsetopt $option - done <<-EOF - CASE_GLOB - CORRECT - EQUALS - FLOWCONTROL - NOMATCH - EOF - #endregion - - # bindkey -v - # zmodload zsh/complist - # bindkey -M menuselect 'h' vi-backward-char - # bindkey -M menuselect 'k' vi-up-line-or-history - # bindkey -M menuselect 'l' vi-forward-char - # bindkey -M menuselect 'j' vi-down-line-or-history - bindkey "^a" vi-beginning-of-line - bindkey "^e" vi-end-of-line - bindkey '^p' history-search-backward - bindkey '^n' history-search-forward - bindkey '^f' autosuggest-accept - bindkey -M emacs '^[^[' sudo-command-line - bindkey -M vicmd '^[^[' sudo-command-line - bindkey -M viins '^[^[' sudo-command-line - - # prompt init - eval "$(${pkgs.oh-my-posh}/bin/oh-my-posh init zsh --config ${../../dotfiles/prompt.json})" - ''; - dirHashes = { - dl = "${config.xdg.userDirs.download}"; - docs = "${config.xdg.userDirs.documents}"; - code = "${config.xdg.userDirs.documents}/code"; - nix = "${config.home.homeDirectory}/nixos"; - nixos = "${config.home.homeDirectory}/nixos"; - pics = "${config.xdg.userDirs.pictures}"; - vids = "${config.xdg.userDirs.videos}"; - }; - sessionVariables = { - DIRENV_LOG_FORMAT = ""; - LC_ALL = "en_US.UTF-8"; - # SSH_AUTH_SOCK = "$(gpgconf --list-dirs agent-ssh-socket)"; - KEYTIMEOUT = 1; - GPG_TTY = "$(tty)"; - PATH = "$PATH:$HOME/bin"; - # FLAKE = "$HOME/sysconf/nix"; - }; - shellAliases = { - tm = "tmuxifier"; - t = "tmux"; - # run = "nix-shell --command 'zsh' -p"; - run = "${runpkg}/bin/run"; - fhs = "steam-run"; - nsh = "nix-shell --command 'zsh'"; - nd = "nix develop"; - g = "git"; - gs = "git st"; - gst = "git st"; - src = "cd $HOME/dev"; - sv0 = "ssh -l root proxmox"; - nmcs = "ssh -l kd nmcs"; - pn = "pnpm"; - rm = "rm -rf"; - cp = "cp -ri"; - mkdir = "mkdir -p"; - free = "free -m"; - j = "just"; - ed = "code"; - nv = "nvim"; - sv = "sudo nvim"; - meteo = "curl http://wttr.in"; - cdi = "broot"; - bd = "popd || cd .."; - lf = "yazi"; - ps = "procs"; - du = "dust"; - df = "duf"; - cdr = "cd \$(git rev-parse --show-toplevel)"; - # l = "eza -al --no-time --group-directories-first"; - # ls = "eza -al --no-time --group-directories-first"; - # la = "eza -a"; - # ll = "eza -l --no-time --group-directories-first"; - # lt = "eza -aT --no-time --group-directories-first"; - lg = "lazygit"; - ls = "eza -alTL 1 --icons --no-time --group-directories-first"; - la = "eza -a --icons --no-time --group-directories-first"; - cat = "bat --theme Nord --style numbers,changes --color=always --tabs=2 --wrap=never"; - diff = "delta"; - top = "btm"; - glg = "git lg"; - serve = "python3 -m http.server"; - ytmp3 = "yt-dlp --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-thumbnail --embed-metadata --output '%(title)s.%(ext)s'"; - pst = "${pst}/bin/pst"; - }; - }; -} diff --git a/home/valerie/home.nix b/home/valerie/home.nix deleted file mode 100644 index bbb9bf3..0000000 --- a/home/valerie/home.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ - pkgs, - lib, - config, - inputs, - ... -}: let - hm = inputs.home-manager.lib.hm; -in { - home-manager.users.valerie = { - # import home-manager modules - imports = builtins.concatMap import [ - ../modules - ]; - - home = { - file.".ssh/id_user.pub".text = builtins.readFile ../../system/waves/id_user.pub; - file.".config/nixpkgs/config.nix".text = '' - { - allowUnfree = true; - allowUnfreePredicate = _: true; - } - ''; - username = "valerie"; - homeDirectory = "/home/valerie"; - extraOutputsToInstall = ["doc" "devdoc"]; - packages = - [ - inputs.nh.packages.x86_64-linux.default - inputs.st.packages.x86_64-linux.st-snazzy - ] - ++ (with pkgs; [ - nom - pinta - vesktop - signal-desktop - blockbench - blender - prismlauncher - unstable.vscode-fhs - ]); - sessionVariables = { - NIX_AUTO_RUN = "1"; - NH_FLAKE = "/home/valerie/nixos"; - }; - stateVersion = "24.11"; - }; - nix.package = lib.mkForce pkgs.unstable.nixVersions.latest; - nix.extraOptions = '' - experimental-features = nix-command flakes - ''; - manual = { - html.enable = false; - json.enable = false; - manpages.enable = false; - }; - programs.home-manager.enable = true; - programs.git.enable = true; - systemd.user.startServices = "sd-switch"; - }; - xdg.mime = { - defaultApplications = { - "applications/zip" = "org.gnome.FileRoller.desktop"; - }; - }; -} diff --git a/hosts/wireframe/configuration.nix b/hosts/wireframe/configuration.nix new file mode 100755 index 0000000..6d687fa --- /dev/null +++ b/hosts/wireframe/configuration.nix @@ -0,0 +1,101 @@ +{ + config, + pkgs, + lib, + outputs, + inputs, + ... +}: { + imports = [ + ./hardware-configuration.nix + ../../system/nix.nix + ../../system/sops.nix + ../../system/impermanence.nix + ../../system/battery.nix + ../../system/security.nix + ../../system/virtualisation.nix + # ../../system/kanata.nix + ../../system/sshd.nix + ../../system/pipewire.nix + ../../system/lnr.nix + ../../system/fonts.nix + ../../system/console.nix + ../../system/gui.nix + ../../system/i18n.nix + ../../system/nix-ld.nix + ]; + + boot.kernelPackages = pkgs.unstable.linuxPackages_latest; + + # just in case for thunderbolt + services.hardware.bolt.enable = true; + + sops.secrets.v-password.neededForUsers = true; + sops.secrets.root-password.neededForUsers = true; + users.mutableUsers = false; + + users.users.v = { + uid = 1000; + description = "SD. V"; + hashedPasswordFile = config.sops.secrets.v-password.path; + home = "/home/v"; + createHome = true; + shell = pkgs.zsh; + openssh.authorizedKeys.keys = [ + (builtins.readFile ../../files/id_user.pub) + ]; + isNormalUser = true; + extraGroups = [ + "wheel" + "networkmanager" + "audio" + "docker" + "input" + "libvirtd" + "plugdev" + "video" + "adbusers" + "uinput" + ]; + }; + users.users.root = { + shell = pkgs.zsh; + extraGroups = []; + hashedPasswordFile = config.sops.secrets.root-password.path; + openssh.authorizedKeys.keys = [ + (builtins.readFile ../../files/id_user.pub) + ]; + }; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + networking.hostName = "wireframe"; + networking.networkmanager.enable = true; + boot.supportedFilesystems = ["ntfs"]; + + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + + # services (in general) + services.gvfs.enable = true; + services.libinput.enable = true; + services.printing.enable = true; + services.flatpak.enable = true; + + programs.adb.enable = true; + + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + + programs.appimage.binfmt = true; + + environment.systemPackages = builtins.attrValues { + inherit (pkgs.unstable) unzip zip libvterm-neovim steam; + }; + + # fingerprint support + services.fprintd.enable = true; + system.stateVersion = "24.11"; +} diff --git a/disko.nix b/hosts/wireframe/disko.nix old mode 100644 new mode 100755 similarity index 65% rename from disko.nix rename to hosts/wireframe/disko.nix index afe435e..73e25e4 --- a/disko.nix +++ b/hosts/wireframe/disko.nix @@ -1,6 +1,12 @@ -# sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko.nix +# sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount ./disko.nix --argstr device "/dev/..." # nixos-generate-config --no-filesystems --root /mnt -# mv /tmp/disko.nix /mnt/etc/nixos +# -- move nixos folder to /mnt/etc/nixos +# nixos-install --flake /mnt/etc/nixos#wireframe --root /mnt +# +# https://github.com/nix-community/disko/blob/master/docs/quickstart.md +# +# make sure to put this nixos configuration into /etc/nixos after successful install. Also, add the generated sops key into the .sops.yaml and rebuild for sops support (do not forget `sops updatekeys -y secrets/secrets.yaml`) +# # REMOVE: https://www.youtube.com/watch?v=nLwbNhSxLd4 (Full NixOS Guide) # REMOVE: https://www.youtube.com/watch?v=YPKwkWtK7l0 # IMPORTANT: this disk configuration is setup for *impermanance* systems. @@ -16,11 +22,11 @@ content = { type = "gpt"; partitions = { - boot = { - name = "boot"; - size = "1M"; - type = "EF02"; - }; + # boot = { + # name = "boot"; + # size = "1M"; + # type = "EF02"; + # }; ESP = { name = "ESP"; size = "500M"; @@ -46,13 +52,6 @@ }; }; }; - swap = { - size = "35G"; - content = { - type = "swap"; - resumeDevice = true; - }; - }; }; }; }; @@ -69,15 +68,20 @@ subvolumes = { "/root" = { mountpoint = "/"; - mountOptions = ["compress=zstd" "noatime"]; + # mountOptions = ["compress=zstd" "noatime"]; + }; + "/persist" = { + mountpoint = "/persist"; + # mountOptions = ["compress=zstd" "subvol=persist" "noatime"]; + mountOptions = ["subvol=persist" "noatime"]; }; "/home" = { mountpoint = "/home"; - mountOptions = ["compress=zstd" "noatime"]; + mountOptions = ["compress=zstd" "subvol=home" "noatime"]; }; "/nix" = { mountpoint = "/nix"; - mountOptions = ["compress=zstd" "noatime"]; + mountOptions = ["compress=zstd" "subvol=nix" "noatime"]; }; }; }; diff --git a/system/waves/hardware-configuration.nix b/hosts/wireframe/hardware-configuration.nix old mode 100644 new mode 100755 similarity index 68% rename from system/waves/hardware-configuration.nix rename to hosts/wireframe/hardware-configuration.nix index a34f08d..6b30979 --- a/system/waves/hardware-configuration.nix +++ b/hosts/wireframe/hardware-configuration.nix @@ -12,9 +12,9 @@ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = ["xhci_pci" "thunderbolt" "vmd" "nvme" "usbhid" "uas" "usb_storage" "sd_mod"]; + boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usbhid" "uas" "sd_mod"]; boot.initrd.kernelModules = ["dm-snapshot"]; - boot.kernelModules = ["kvm-intel"]; + boot.kernelModules = ["kvm-amd"]; boot.extraModulePackages = []; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking @@ -22,9 +22,9 @@ # still possible to use this option, but it's recommended to use it in conjunction # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp58s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; + # networking.interfaces.enp193s0f3u2u3.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/hosts/wireframe/home.nix b/hosts/wireframe/home.nix new file mode 100755 index 0000000..5605fee --- /dev/null +++ b/hosts/wireframe/home.nix @@ -0,0 +1,73 @@ +{ + pkgs, + lib, + config, + inputs, + outputs, + ... +}: { + imports = + [ + inputs.sops-nix.homeManagerModules.sops + ] + ++ builtins.concatMap import [ + ../../user/v.nix + ]; + + sops = { + age.keyFile = "${config.home.homeDirectory}/.config/sops/age/keys.txt"; + + defaultSopsFile = ../../secrets/secrets.yaml; + validateSopsFiles = false; + + secrets = { + "private_keys/user" = { + path = "${config.home.homeDirectory}/.ssh/id_ed25519"; + }; + }; + }; + + home = { + file.".ssh/id_ed25519.pub".text = builtins.readFile ../../files/id_user.pub; + stateVersion = "24.11"; + username = "v"; + homeDirectory = "/home/${config.home.username}"; + extraOutputsToInstall = ["doc" "devdoc"]; + packages = + [ + inputs.nh.packages.x86_64-linux.default + inputs.zen-browser.packages.x86_64-linux.default + (pkgs.discord.override { + withOpenASAR = false; + withVencord = true; + }) + ] + ++ builtins.attrValues { + inherit + (pkgs) + signal-desktop + element-desktop + pinta + ; + inherit + (pkgs.unstable) + prismlauncher + ; + }; + sessionVariables = { + NIX_AUTO_RUN = "1"; + NH_FLAKE = "${config.home.homeDirectory}/nixos"; + }; + }; + nix.package = lib.mkForce pkgs.unstable.nixVersions.latest; + nix.extraOptions = ''experimental-features = nix-command flakes''; + manual = { + html.enable = true; + json.enable = false; + manpages.enable = false; + }; + programs.home-manager.enable = true; + programs.git.enable = true; + services.lorri.enable = true; + systemd.user.startServices = "sd-switch"; +} diff --git a/konsole.desktop b/konsole.desktop new file mode 100755 index 0000000..398590a --- /dev/null +++ b/konsole.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Categories=System +Comment=Open Konsole +Exec=konsole +GenericName=Console +Icon=utilities-terminal +Name=Konsole +Type=Application +Version=1.4 \ No newline at end of file diff --git a/overlays/default.nix b/overlays.nix old mode 100644 new mode 100755 similarity index 57% rename from overlays/default.nix rename to overlays.nix index 2e96bc1..60e298b --- a/overlays/default.nix +++ b/overlays.nix @@ -1,23 +1,11 @@ {inputs, ...}: { - # This one brings our custom packages from the 'pkgs' directory - additions = final: _prev: import ../pkgs final.pkgs; + # This one brings our custom packages from the 'pkgs' directory. + additions = final: _prev: import ./pkgs final.pkgs; # This one contains whatever you want to overlay # You can change versions, add patches, set compilation flags, anything really. # https://nixos.wiki/wiki/Overlays - modifications = final: prev: { - # example = prev.example.overrideAttrs (oldAttrs: rec { - # ... - # }); - tmuxPlugins = - prev.tmuxPlugins - // { - tokyo-night-tmux = prev.callPackage ../pkgs/tokyo-night-tmux.nix { - pkgs = prev; - }; - }; - gnome-keyring = prev.gnome.gnome-keyring; - }; + modifications = final: prev: {}; # When applied, the unstable nixpkgs set (declared in the flake inputs) will # be accessible through 'pkgs.unstable' diff --git a/pkgs/default.nix b/pkgs/default.nix old mode 100644 new mode 100755 index 27719c7..c274f9c --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,4 +1,3 @@ pkgs: { - disko = pkgs.callPackage ./disko.nix pkgs; - tokyo-night-tmux = pkgs.callPackage ./tokyo-night-tmux.nix pkgs; + fuchsia-cursors = pkgs.callPackage ./fuchsia-cursors.nix pkgs; } diff --git a/pkgs/disko.nix b/pkgs/disko.nix deleted file mode 100644 index 74ebf98..0000000 --- a/pkgs/disko.nix +++ /dev/null @@ -1,16 +0,0 @@ -pkgs: -pkgs.writeShellScriptBin "disko" '' - cat >disko.nix <disko.nix < -``` - -or all of them together: - -```sh -nix flake update --commit-lock-file -``` diff --git a/user/core.nix b/user/core.nix new file mode 100755 index 0000000..d70e311 --- /dev/null +++ b/user/core.nix @@ -0,0 +1,14 @@ +{pkgs, ...}: { + home.packages = builtins.attrValues { + inherit + (pkgs) + spotify + wl-clipboard-rs + transmission_4-qt + ; + inherit + (pkgs.unstable) + steam-run + ; + }; +} diff --git a/home/modules/dev/default.nix b/user/dev.nix old mode 100644 new mode 100755 similarity index 58% rename from home/modules/dev/default.nix rename to user/dev.nix index b0f2109..ee357ff --- a/home/modules/dev/default.nix +++ b/user/dev.nix @@ -3,90 +3,23 @@ config, ... }: { - home.packages = with pkgs.unstable; [ - bruno - xclip - just - nixd - alejandra - zoxide - neovide - nodejs - corepack - cargo-watch - rustup - gcc - go - jetbrains.idea-community - cascadia-code - jdk17 - # lua - lua51Packages.lua - tree-sitter - luarocks - gnumake - ast-grep - ncdu - gh-dash - hurl - jnv - rustscan - slides - markdownlint-cli2 - fx - jq - deno - gleam - unzip - porsmo - mprocs - - transmission_4-gtk - ]; - - # git - programs.lazygit = { - enable = true; - settings = { - gui = { - showIcons = true; - showFileTree = true; - theme = { - activeBorderColor = ["magenta" "bold"]; - inactiveBorderColor = ["black"]; - }; - }; - os = { - editCommand = "nvim"; - editCommandTemplate = "{{editor}} {{filename}}"; - }; - keybinding.universal = { - quit = "q"; - }; - }; + home.packages = builtins.attrValues { + inherit + (pkgs.unstable) + bruno + zoxide + mprocs + just + zellij + ; }; - programs.gitui = { - enable = false; - keyConfig = '' - ( - move_left: Some(( code: Char('h'), modifiers: "")), - move_right: Some(( code: Char('l'), modifiers: "")), - move_up: Some(( code: Char('k'), modifiers: "")), - move_down: Some(( code: Char('j'), modifiers: "")), - stash_open: Some(( code: Char('l'), modifiers: "")), - open_help: Some(( code: F(1), modifiers: "")), - - status_reset_item: Some(( code: Char('U'), modifiers: "SHIFT")), - ) - ''; - }; programs.git = { enable = true; package = pkgs.gitAndTools.gitFull; lfs.enable = true; - userName = "valerie"; + userName = "vivian"; userEmail = "hi@dessa.dev"; signing = { key = "CC10324DD962CB7E"; @@ -111,15 +44,27 @@ rv = "remote -v"; df = "diff HEAD"; }; - extraConfig = { - init.defaultBranch = "main"; + init.defaultBranch = "dev"; branch.autosetupmerge = "true"; push.default = "current"; merge.stat = "true"; core.whitespace = "fix,-indent-with-non-tab,trailing-space,cr-at-eol"; repack.usedeltabaseoffset = "true"; pull.ff = "only"; + core = { + compression = 9; + preloadindex = true; + }; + advice = { + addEmptyPathSpec = false; + pushNonFastForward = false; + statusHints = false; + }; + url = { + "git@github.com:solviarose/".insteadOf = "rose:"; + "git@github.com:".insteadOf = "gh:"; + }; rebase = { autoSquash = true; autoStash = true; @@ -128,6 +73,20 @@ enabled = true; autoupdate = true; }; + status = { + branch = true; + showStash = true; + showUntrackedFiles = "all"; + }; + diff = { + context = 3; + renames = "copies"; + interHunkContext = 10; + }; + }; + diff-so-fancy = { + enable = true; + markEmptyLines = false; }; ignores = [ "*~" @@ -139,12 +98,9 @@ }; programs.gh = { enable = true; - extensions = [ - pkgs.gh-copilot - ]; gitCredentialHelper.enable = true; settings = { - editor = "nvim"; + editor = "emacsclient --reuse-frame -a 'emacs'"; git_protocol = "ssh"; aliases = { co = "pr checkout"; @@ -153,25 +109,17 @@ }; }; }; - - # ssh programs.ssh = { enable = true; matchBlocks = { "hi@dessa.dev" = { host = "gitlab.com github.com"; identitiesOnly = true; - identityFile = [ - "~/.ssh/id_user" - ]; }; "docker lmao" = { host = "docker 192.168.1.203"; user = "git"; port = 2222; - identityFile = [ - "~/.ssh/id_user" - ]; }; }; }; @@ -186,9 +134,49 @@ services.gpg-agent = { enable = true; enableSshSupport = true; - pinentryPackage = pkgs.pinentry-gnome3; + pinentryPackage = pkgs.pinentry-qt; + }; + + programs.emacs = { + enable = true; + package = pkgs.emacs-unstable; + extraPackages = epkgs: [ + epkgs.treesit-grammars.with-all-grammars + epkgs.vterm + ]; }; home.sessionVariables = { SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/keyring/ssh"; + EMACSDIR = "${config.home.homeDirectory}/.emacs.d"; }; + + xdg.configFile."zellij/config.kdl".text = '' + default_shell "${pkgs.zsh}/bin/zsh" + show_startup_tips false + theme "catppuccin-frappe" + + keybinds clear-defaults=true { + normal { + bind "Ctrl 1" { CloseTab; } + bind "Ctrl 2" { NewTab; } + bind "Ctrl 3" { GoToPreviousTab; } + bind "Ctrl 4" { GoToNextTab; } + } + } + + ui { + pane_frames { + hide_session_name false + } + } + ''; + xdg.configFile."zellij/layouts/default.kdl".text = '' + layout { + pane borderless=false + pane size=1 borderless=true { + plugin location="zellij:compact-bar" + } + } + pane_frames false + ''; } diff --git a/user/obs.nix b/user/obs.nix new file mode 100755 index 0000000..8effddb --- /dev/null +++ b/user/obs.nix @@ -0,0 +1,8 @@ +{pkgs, ...}: { + programs.obs-studio = { + enable = true; + plugins = builtins.attrValues { + inherit (pkgs.obs-studio-plugins) wlrobs; + }; + }; +} diff --git a/user/qt.nix b/user/qt.nix new file mode 100755 index 0000000..87150ca --- /dev/null +++ b/user/qt.nix @@ -0,0 +1,14 @@ +{pkgs, ...}: { + qt = { + enable = true; + }; + + home.pointerCursor = { + package = pkgs.fuchsia-cursors; + x11.enable = true; + x11.defaultCursor = "Fuchsia"; + gtk.enable = true; + name = "Fuchsia"; + size = 20; + }; +} diff --git a/user/term.nix b/user/term.nix new file mode 100755 index 0000000..3822ad5 --- /dev/null +++ b/user/term.nix @@ -0,0 +1,235 @@ +{ + config, + pkgs, + inputs, + ... +}: { + xdg.configFile = { + "ghostty/config".source = "${../files/ghostty-config}"; + }; + programs = { + bat = { + enable = true; + config = { + pager = "less -FR"; + theme = "Tomorrow Night"; + style = "numbers,changes"; + tabs = "2"; + wrap = "never"; + }; + themes = { + tomorrow-night = { + src = pkgs.fetchFromGitHub { + owner = "chriskempson"; + repo = "Tomorrow-Theme"; + rev = "ccf6666d888198d341b26b3a99d0bc96500ad503"; + sha256 = "sha256-G9NOFKP9GX8lKIoHVska6xAY9AKKMenZuVkx0YgfQyA="; + }; + file = "TextMate/Tomorrow-Night.tmTheme"; + }; + }; + }; + eza.enable = true; + man.enable = true; + }; + home.packages = builtins.attrValues { + inherit + (pkgs) + #tailspin + #curlie + #ouch + #viddy + #netscanner + #kalker + fd + ripgrep + # await + ghostty + bottom + direnv + ; + }; + + programs.fzf = { + enable = true; + enableZshIntegration = true; + }; + services.gpg-agent.enableZshIntegration = true; + + programs.zsh = let + emacs_client = ''emacsclient --create-frame --alternate-editor=""''; + in { + enable = true; + dotDir = ".config/zsh"; + enableCompletion = false; + autosuggestion.enable = false; + history = { + path = "${config.home.homeDirectory}/.cache/.zsh-histfile"; + save = 1000000000; + size = 100000000; + }; + initExtraBeforeCompInit = '' + zstyle ':completion:*' menu select + zstyle ':completion:*' menu no + zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' + zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS} + zstyle ':completion:*:descriptions' format '[%d]' + zstyle ':completion::complete:*' gain-privileges 1 + zstyle ':fzf-tab:complete:cd:*' fzf-preview 'eza -1 --color=always $realpath' + zstyle ':fzf-tab:complete:+__zoxide_z:*' fzf-preview 'eza -1 --color=always $realpath' + zstyle ':fzf-tab:*' switch-group '<' '>' + zstyle ':completion:*:git-checkout:*' sort false + # _comp_options+=(globdots) + #setopt APPEND_HISTORY # Append to histfile instead of overwriting. + setopt SHARE_HISTORY # Share history between all sessions. + setopt HIST_IGNORE_SPACE # Do not record an event starting with a space. + #setopt HIST_IGNORE_ALL_DUPS # Delete an old recorded event if a new event is a duplicate. + setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file. + setopt HIST_IGNORE_DUPS # Do not record an event that was just recorded again. + setopt HIST_FIND_NO_DUPS # Do not display a previously found event. + #setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format. + #setopt HIST_EXPIRE_DUPS_FIRST # Expire a duplicate event first when trimming history. + function error() { print -P "%F{red}[ERROR]%f: %F{yellow}$1%f" && return 1 } + function info() { print -P "%F{blue}[INFO]%f: %F{cyan}$1%f"; } + typeset -gAH ZINIT; + ZINIT[HOME_DIR]=''${XDG_DATA_HOME:-''${HOME}/.local/share}/zinit ZPFX=$ZINIT[HOME_DIR]/polaris + ZINIT[BIN_DIR]=$ZINIT[HOME_DIR]/zinit.git ZINIT[OPTIMIZE_OUT_DISK_ACCESSES]=1 + ZINIT[COMPLETIONS_DIR]=$ZINIT[HOME_DIR]/completions ZINIT[SNIPPETS_DIR]=$ZINIT[HOME_DIR]/snippets + ZINIT[ZCOMPDUMP_PATH]=$ZINIT[HOME_DIR]/zcompdump ZINIT[PLUGINS_DIR]=$ZINIT[HOME_DIR]/plugins + ZI_REPO='zdharma-continuum' + if [[ ! -e $ZINIT[BIN_DIR] ]]; then + info 'downloading zinit' \ + && command git clone \ + https://github.com/$ZI_REPO/zinit.git \ + $ZINIT[BIN_DIR] \ + || error 'failed to clone zinit repository' \ + && info 'setting up zinit' \ + && command chmod g-rwX $ZINIT[HOME_DIR] \ + && zcompile $ZINIT[BIN_DIR]/zinit.zsh \ + && info 'sucessfully installed zinit' + fi + if [[ -e $ZINIT[BIN_DIR]/zinit.zsh ]]; then + source $ZINIT[BIN_DIR]/zinit.zsh \ + && autoload -Uz _zinit \ + && (( ''${+_comps} )) \ + && _comps[zinit]=_zinit + else error "unable to find 'zinit.zsh'" && return 1 + fi + ''; + initExtra = '' + zi wait lucid light-mode for \ + Aloxaf/fzf-tab \ + atinit"zicompinit; zicdreplay" \ + zdharma-continuum/fast-syntax-highlighting \ + atload"_zsh_autosuggest_start" \ + zsh-users/zsh-autosuggestions \ + blockf atpull'zinit creisntall -q .' \ + zsh-users/zsh-completions + zinit cdreplay -q + bindkey -v + bindkey "^a" vi-beginning-of-line + bindkey "^e" vi-end-of-line + bindkey '^p' history-search-backward + bindkey '^n' history-search-forward + #bindkey '^f' autosuggest-accept + + while read -r option; do + setopt $option + done <<-EOF + ALWAYS_TO_END + AUTO_LIST + AUTO_MENU + AUTO_PARAM_SLASH + AUTO_PUSHD + ALWAYS_TO_END + COMPLETE_IN_WORD + EXTENDED_GLOB + INC_APPEND_HISTORY + INTERACTIVE_COMMENTS + MENU_COMPLETE + NO_BEEP + NOTIFY + PATH_DIRS + PUSHD_IGNORE_DUPS + PUSHD_SILENT + EOF + while read -r option; do + unsetopt $option + done <<-EOF + CASE_GLOB + CORRECT + EQUALS + FLOWCONTROL + NOMATCH + EOF + + # prompt init + zi light mroth/evalcache + eval "$(${pkgs.oh-my-posh}/bin/oh-my-posh init zsh --config ${../files/prompt.json})" + _evalcache fzf --zsh + _evalcache zoxide init --cmd cd zsh + _evalcache direnv hook zsh + zi for atload' + zicompinit; zicdreplay + _zsh_highlight_bind_widgets + _zsh_autosuggest_bind_widgets' \ + as'null' id-as'zinit/cleanup' lucid nocd wait \ + $ZI_REPO/null + ''; + dirHashes = { + dl = "${config.xdg.userDirs.download}"; + docs = "${config.xdg.userDirs.documents}"; + ops = "${config.xdg.userDirs.documents}/ops"; + code = "${config.xdg.userDirs.documents}/ops/code"; + nixos = "/etc/nixos"; + pics = "${config.xdg.userDirs.pictures}"; + vids = "${config.xdg.userDirs.videos}"; + }; + sessionVariables = { + DIRENV_LOG_FORMAT = ""; + LC_ALL = "en_US.UTF-8"; + # SSH_AUTH_SOCK = "$(gpgconf --list-dirs agent-ssh-socket)"; + KEYTIMEOUT = 1; + GPG_TTY = "$(tty)"; + PATH = "$PATH:$HOME/bin"; + EDITOR = "em"; + ALTERNATE_EDITOR = "emacs --init-directory='~/.demacs.d'"; + }; + shellAliases = { + fhs = "steam-run"; + nsh = "nix-shell --command 'zsh'"; + nd = "nix develop"; + # tempemacs = "emacs -q --init-directory=`mktemp -d`"; + # also dont forget --debug-init + em = emacs_client; + ff = "emacsclient"; + ed = "emacsclient -nw -a=''"; + g = "git"; + gs = "git st"; + gc = "git clone"; + gi = "git init"; + gr = "git sync"; + gd = "git diff --output-indicator-new=' ' --output-indicator-old=' '"; + gdf = "git df --output-indicator-new=' ' --output-indicator-old=' '"; + gp = "git push"; + gl = "git pull"; + ga = "git add"; + gap = "git add --patch"; + gb = "git branch"; + cp = "cp -ri"; + mkdir = "mkdir -p"; + free = "free -m"; + j = "just"; + meteo = "curl http://wttr.in"; + bd = "popd || cd .."; + cdr = "cd \$(git rev-parse --show-toplevel)"; + ls = "eza -al --icons --no-time --group-directories-first"; + la = "eza -a --icons --no-time --group-directories-first"; + cat = "bat"; + top = "btm"; + glg = "git lg"; + serve = "${pkgs.python3}/bin/python3 -m http.server"; + ytmp3 = "${pkgs.yt-dlp}/bin/yt-dlp --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-thumbnail --embed-metadata --output '%(title)s.%(ext)s'"; + }; + }; +} diff --git a/user/v.nix b/user/v.nix new file mode 100755 index 0000000..e3a5950 --- /dev/null +++ b/user/v.nix @@ -0,0 +1,8 @@ +[ + ./qt.nix + ./zathura.nix + ./obs.nix + ./core.nix + ./dev.nix + ./term.nix +] diff --git a/home/modules/core/default.nix b/user/zathura.nix old mode 100644 new mode 100755 similarity index 73% rename from home/modules/core/default.nix rename to user/zathura.nix index 25eec8c..6f844b8 --- a/home/modules/core/default.nix +++ b/user/zathura.nix @@ -1,20 +1,4 @@ -{pkgs, ...}: { - home.packages = with pkgs; [ - spotify - - noto-fonts - noto-fonts-emoji - material-design-icons - commit-mono - corefonts - vistafonts - (google-fonts.override {fonts = ["Overpass" "Nunito"];}) - (nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];}) - ]; - services.gnome-keyring = { - enable = true; - components = ["secrets" "ssh"]; - }; +{...}: { programs.zathura = { enable = true; extraConfig = '' @@ -55,14 +39,8 @@ set recolor-lightcolor "#2E3440" set recolor-darkcolor "#ECEFF4" set recolor "true" - set font "Lacklustre" + set font "Null Mono" set guioptions none ''; }; - programs.obs-studio = { - enable = true; - plugins = with pkgs.obs-studio-plugins; [ - wlrobs - ]; - }; }