[{"data":1,"prerenderedAt":347},["ShallowReactive",2],{"project-44080410":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":39,"post_text":42,"what":43,"said":57,"maker_in_thread":159,"shape":164,"grid":168,"attempts":310,"same_week":311,"maker_shows":213,"maker_hidden":340,"reader_version":341,"card":342},"44080410","Lnk","Git-native dotfiles manager","title","Show HN: Lnk – Git-native dotfiles manager","https:\u002F\u002Fgithub.com\u002Fyarlson\u002Flnk","github.com","yar-kravtsov",1748086879,2025,75,57,957,3837,25,"notable","dev_tools","dotfiles manager","cli",[24,25,26,27,28],"dotfiles","git","symlinks","stow","chezmoi","curious",-0.36,{"positive":32,"neutral":33,"mixed":32,"critical":34},0,6,5,11,{"privacy":37,"idea":38},{"positive":32,"critical":32},{"positive":32,"critical":34},[40,32,32,32,40,32,32,32,32,32,32,32,40,32,41,32,32,32,32,32,40,32,32,32,32,32,32,32,32,32,32,32,32,41,41,41,32,40,41,40],3,1,"Move dotfiles to ~\u002F.config\u002Flnk, get symlinks back, use Git normally. Single binary, no config files, no fluff. Built because chezmoi was too complex and plain Git was too manual.",{"problem":44,"audience":50,"pricing":50,"motivation":51,"time_to_build":50,"stack":55,"openness":56,"stage":56,"team_size":56},{"value":45,"source":46,"evidence":47},"Managing dotfiles with Git is too manual and chezmoi is too complex","maker",[48],{"id":49},"post",null,{"value":52,"source":46,"evidence":53},"Built because chezmoi was too complex and plain Git was too manual",[54],{"id":49},[],"unknown",{"praise":58,"objections":71,"requests":90,"questions":102,"alternatives":117},[59],{"value":60,"source":61,"evidence":62},"Commenters say GNU Stow plus Git works well for them","commenter",[63,67],{"id":64,"by":65,"text":66},"44080938","dmacvicar","I have managed my dotfiles in git for over a decade, and I have never needed anything else than git and GNU stow. I organize dotfiles in a few modules, and then I stand in the…",{"id":68,"by":69,"text":70},"44081055","keybored","Same for me. I don’t remember a problem with dotfiles. I’m sure there were ones that maybe I got used to. I also use it for ~\u002Fbin scripts. There the limitations are more…",[72,79],{"value":73,"source":61,"evidence":74},"Machine-specific differences are not handled by simple dotfile managers",[75],{"id":76,"by":77,"text":78},"44080728","m000","My main gripe with dotfile managers (including lnk) is that they assume a uniform environment. I haven't found one that doesn't make this fundamendal assumption. Some scenarios…",{"value":80,"source":61,"evidence":81},"Dotfiles often contain secrets that are hard to manage safely",[82,86],{"id":83,"by":84,"text":85},"44080588","wanderingmind","There are so many secrets spread across dot files. Is it possible to encrypt and store them in remote and de-encrypt when it’s pulled to local machines?",{"id":87,"by":88,"text":89},"44080693","drewcoo","That moves the problem to \"how do we securely manage shared keys.\" And it adds \"how safe are those encrypted secrets [edit: changed from \"keys\" to more general language] that are…",[91,98],{"value":92,"source":61,"evidence":93},"Warn about secrets when adding files",[94],{"id":95,"by":96,"text":97},"44080705","efitz","I have a feature suggestion: When you ‘lnk add’ a file, check it for patterns that might indicate it contains a secret, and warn the user if indications of a secret are found.…",{"value":99,"source":61,"evidence":100},"Support per-host or per-machine config differences",[101],{"id":76,"by":77,"text":78},[103,110],{"value":104,"source":61,"evidence":105},"How is this different from GNU Stow?",[106],{"id":107,"by":108,"text":109},"44080514","peterhadlaw","How is this different from GNU stow?",{"value":111,"source":61,"evidence":112},"How is it simpler than chezmoi?",[113],{"id":114,"by":115,"text":116},"44080599","denysvitali","Seems very similar (but less mature) to Chezmoi. How is Chezmoi too complex for your use case? I'm puzzled",[118,123,130,145,152],{"value":119,"source":61,"evidence":120},"GNU Stow",[121,122],{"id":107,"by":108,"text":109},{"id":64,"by":65,"text":66},{"value":28,"source":61,"evidence":124},[125,129],{"id":126,"by":127,"text":128},"44080742","amar1729","I switched over to chezmoi a few years ago - previously had been managing a \"main\" (macOS) and \"Ubuntu\" branch for dots. turned out to be a huge pain especially once I ran into…",{"id":114,"by":115,"text":116},{"value":131,"source":61,"evidence":132},"Bare git repo in home directory",[133,137,141],{"id":134,"by":135,"text":136},"44081612","NicolaiS","Another approach that avoids symlinks and avoids a git repo in $HOME (i.e. everything is a subdir of that git repo) is to use the option \"git-dir\" to clone into a subdir, e.g.…",{"id":138,"by":139,"text":140},"44080896","nrvn","I have been using the \"bare git at $HOMEDIR\"[0] approach for several years. Benefits: 1. no extra tools. 2. one off task for setting up the git repo and alias…",{"id":142,"by":143,"text":144},"44081073","hk1337","I like the method I saw on atlassian and haven’t needed any other option. Clone to a bare repo and make your home directory the git home. Then I can easily edit the files and…",{"value":146,"source":61,"evidence":147},"YADM",[148],{"id":149,"by":150,"text":151},"44080847","philjackson","Check out YADM which allows you to link files based on criteria such as hostname.",{"value":153,"source":61,"evidence":154},"Dotter",[155],{"id":156,"by":157,"text":158},"44081412","SuperCuber","Check out https:\u002F\u002Fgithub.com\u002FSuperCuber\u002Fdotter",{"comments":41,"answered":41,"key":160},[161],{"id":162,"text":163},"44080538","Great question! GNU Stow and lnk solve similar problems but with different approaches: GNU Stow: - Package-based structure: Requires organizing dotfiles into \"packages\"…",{"commenters":165,"max_depth":33,"maker_replies":41,"first_comment_mins":166,"lifespan_hours":167},44,20,99,[169,171,175,179,181,184,185,188,189,191,194,198,201,203,206,209,212,215,217,219,222,225,228,230,233,235,236,239,242,245,246,249,252,255,256,259,262,263,266,269,271,273,276,278,280,282,285,287,288,290,292,295,298,302,305,308],[95,32,40,170,96,32],"project\u002Fneutral\u002Fprivacy",[172,32,32,173,174,32],"44081396","commenter\u002Fneutral\u002Fprivacy","tough",[176,32,32,177,178,32],"44082175","commenter\u002Fneutral\u002Fnone","adamors",[180,32,32,177,174,32],"44082537",[182,32,32,177,183,32],"44083175","eddd-ddde",[83,41,40,170,84,32],[186,41,32,173,187,32],"44080614","OptionX",[87,41,32,173,88,32],[190,41,32,173,143,32],"44081122",[192,41,32,177,193,32],"44083373","porridgeraisin",[195,41,32,196,197,32],"44085024","other\u002Fneutral\u002Fnone","jakejarvis",[199,41,32,173,200,32],"44080895","whilenot-dev",[202,41,32,173,143,32],"44081115",[204,41,32,173,205,32],"44081522","shoeffner",[207,41,32,173,208,32],"44088531","lillecarl",[210,41,32,173,211,32],"44084806","pabs3",[107,213,40,214,108,32],2,"project\u002Fneutral\u002Fidea",[162,213,32,216,11,41],"maker\u002Fneutral\u002Fidea",[218,40,32,196,211,32],"44084722",[76,220,41,221,77,32],4,"project\u002Fcritical\u002Fidea",[223,220,32,177,224,32],"44080765","Galanwe",[226,220,32,177,227,32],"44080775","yonatan8070",[229,220,32,177,143,32],"44081139",[231,220,32,196,232,32],"44081598","setopt",[234,220,32,177,227,32],"44082793",[149,220,32,177,150,32],[237,220,32,177,238,32],"44092042","snapplebobapple",[240,220,32,177,241,32],"44080989","justusthane",[243,220,40,214,244,32],"44081129","danlitt",[156,220,32,196,157,32],[247,220,32,196,248,32],"44081754","ljm",[250,220,32,177,251,32],"44103555","alsetmusic",[253,34,32,177,254,32],"44080611","globular-toast",[126,34,32,177,127,32],[257,34,32,177,258,32],"44081864","retrodaredevil",[260,34,32,177,261,32],"44084960","sureglymop",[134,33,32,196,135,32],[264,33,32,177,265,32],"44081896","andy24",[267,33,32,196,268,32],"44082330","abound",[138,270,32,196,139,32],7,[272,270,32,177,143,32],"44081168",[274,270,32,177,275,32],"44083551","yencabulator",[277,270,32,177,143,32],"44085214",[279,270,32,177,275,32],"44085220",[281,270,32,177,143,32],"44116645",[283,270,32,177,284,32],"44081170","akdev1l",[64,286,41,221,65,32],8,[68,286,41,221,69,32],[289,286,32,196,244,32],"44081107",[142,291,41,221,143,32],9,[293,291,32,177,294,32],"44081216","mathstuf",[296,291,40,214,297,32],"44081262","threecheese",[299,300,32,196,301,32],"44080618",10,"sam_lowry_",[303,35,41,221,304,32],"44080920","dcre",[306,307,32,196,157,32],"44081407",12,[114,309,40,214,115,32],13,[],[312,317,322,327,332,336],{"id":313,"name":314,"points":315,"category":316},"44118023","Desktop Docs",597,"productivity",{"id":318,"name":319,"points":320,"category":321},"44110584","simonwillison.net",529,"ai",{"id":323,"name":324,"points":325,"category":326},"44103839","Lazy Tetris",438,"games",{"id":328,"name":329,"points":330,"category":331},"44067409","Defuddle",418,"languages",{"id":333,"name":334,"points":335,"category":321},"44112326","AutoThink",397,{"id":337,"name":338,"points":339,"category":326},"44101175","Porting Terraria and Celeste to WebAssembly",338,false,"v2",{"id":343,"name":5,"line":6,"ai":340,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":344,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":345,"url":9,"mix":346,"praise":60,"objection":73,"sub":21},44080410,[24,25,26,27,28],"3000300000003010000030000000000001110313",[32,33,32,34],1793991121437]